ক্রেস্টক্লোব () পদ্ধতি হিসাবে প্রাসঙ্গিক LOB সৃষ্টি অক্ষম করা ত্রুটি ছুঁড়েছে


87

আমি ওরাকল 10 জি সহ হাইবারনেট 3.5.5 ব্যবহার করছি। আমি সূচনা করার সময় নীচের ব্যতিক্রমটি দেখতে পাচ্ছি কিন্তু অ্যাপ্লিকেশনটি নিজেই ঠিকঠাক কাজ করছে। এই ব্যতিক্রমের কারণ কী? এবং কিভাবে এটি সংশোধন করা যায়?

পদ্ধতি
হিসাবে প্রাসঙ্গিক LOB সৃষ্টি অক্ষম করার ব্যতিক্রমcreateClob() ত্রুটি ছুঁড়েছে:java.lang.reflect.InvocationTargetException

তথ্য
ওরাকল সংস্করণ: ওরাকল ডেটাবেস 10 জি এন্টারপ্রাইজ সংস্করণ প্রকাশ 10.2.0.4.0 জেডিবিসি ড্রাইভার: ওরাকল জেডিবিসি ড্রাইভার, সংস্করণ: 11.1.0.7.0


"অ্যাপ্লিকেশনটি নিজেই ঠিকঠাক কাজ করছে" ... যতক্ষণ আপনি এলওবি ব্যবহার করার চেষ্টা করবেন না, আমি কল্পনা করি।
নাইয়ারগডস

উত্তর:


76

নীচে সম্পত্তি যুক্ত করে এই সতর্কতাটি অক্ষম করুন।

বসন্ত প্রয়োগের জন্য:

spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false

সাধারণ জেপিএ:

hibernate.temp.use_jdbc_metadata_defaults=false

4
আপনি কোন জাভা সংস্করণ দিয়ে এটি ব্যবহার করে দেখেছেন? ইন্টেলিজ এই সম্পত্তিটি সন্ধান করতে অক্ষম।
Comiventor

আমরাগ্রহণের পাশাপাশি ইন্টেলিজ দিয়ে চেষ্টা করেছি। উভয় ক্ষেত্রেই এটির কার্যকরী হয় ually অবশেষে, আমরা জাভা,, ,,৮ নিয়ে ক্লান্ত হয়ে পড়েছি এবং এটি আমাদের জন্য কোনও সমস্যা ছাড়াই কাজ করে। কেবল আপনার কোডটি ডিবাগ করুন বা আপনার কোডটি ক্রস করুন।
নারায়ণ যেরবাবাচু

67

যেমন আপনি লক্ষ্য করেছেন, এই ব্যতিক্রমটি আসল সমস্যা নয়। এটি বুটের সময় ঘটে যখন হাইবারনেট ডাটাবেস থেকে কিছু মেটা তথ্য পুনরুদ্ধার করার চেষ্টা করে। এটি আপনাকে বিরক্ত করলে আপনি এটি অক্ষম করতে পারেন:

hibernate.temp.use_jdbc_metadata_defaults false

4
ধন্যবাদ পারটেনন আমি এটি অক্ষম করার বিকল্প সম্পর্কে সচেতন, তবে আমি এই ব্যতিক্রমটির কারণ অনুসন্ধান করার চেষ্টা করছি। কোন পয়েন্টার?
গিরিবাইক

6
আমি যতদূর বুঝতে পেরেছি, এটি আপনার অ্যাপ্লিকেশনটিতে কোনও সমস্যা নয়, হাইবারনেট কেবল এটি যাচাই করছে যে ডিবি কিছু বৈশিষ্ট্য সমর্থন করে এবং যদি তা না করে তবে নিজেকে সামঞ্জস্য করে। কোনও ম্যাপিং এটিকে ট্রিগার করছে কিনা তা আমি যাচাই করব (এলওবি ফিল্ডের মতো), তবে এটি উদ্বিগ্ন হওয়ার কিছু নেই।
jpkrohling

4
সতর্কতা : ওরাকল দিয়ে এই সমাধানটি ব্যবহার করা বিপজ্জনক ! এটি অপ্রত্যাশিত COMMITs বাড়ে । হাইবারনেট যখন অস্থায়ী টেবিলগুলি তৈরি করে তখন এটি একটি নতুন লেনদেন খুলতে হবে, যেহেতু ওরাকল ডিবিতে ডিডিএল বিবৃতি কমিটিকে বোঝায়। এই বিকল্পটিকে মিথ্যা হিসাবে সেট করে আপনি নতুন লেনদেন খোলার অক্ষম করে এবং ডিডিএল আপনার লেনদেনের মধ্যেই বিষয়টি কমিটিকেটেড করে দেয়।
বরিস ব্রডস্কি

@ বরিসব্রোডস্কি, আপনি কি নিশ্চিত যে আপনি বর্ণিত আচরণটি এই সম্পত্তিটিকে মিথ্যা হিসাবে সেট করার কারণে ঘটে? কোডটি দেখছি, যখন এটি মিথ্যা হয় তখন অতিরিক্ত কিছু কার্যকর করা হয় না g github.com/hibernate/hibernate-orm/blob/…
jpkrohling

4
@jpkrohling হ্যাঁ, আমি হাইবারনেট ৪.২..7 ডিবাগ করেছি এবং দেখেছি যদি আমার: সেট করা useJdbcMetadataথেকে falseপ্রতিরোধ metaReportsDDLCausesTxnCommitকরা সেট করা যায় এবং এটি স্থির থাকে false! grepcode.com/file/repo1.maven.org/maven2/org.hibernate/…
বরিস

28

উত্সে মন্তব্যগুলি তাকান :

মূলত এখানে আমরা জেডিবিসি-তে যুক্ত হওয়া এলওবি তৈরির জন্য java.sql. সংযোগ পদ্ধতিগুলি কল করতে পারি কিনা তা যাচাই করে দেখছি 4.. জাভা.এসকিউএল.সংযোগ এই পদ্ধতিগুলি ঘোষণা করে কিনা তা আমরা খতিয়ে দেখি না, তবে প্রকৃত java.sql. সংযোগও রয়েছে কিনা তাও আমরা যাচাই করি না We উদাহরণস্বরূপ এগুলি প্রয়োগ করে (অর্থাত্ ব্যতিক্রম না ছোঁড়াতে কল করা যেতে পারে)।

সুতরাং, এটি নির্ধারণের চেষ্টা করছে যে এটি কিছু নতুন জেডিবিসি 4 পদ্ধতি ব্যবহার করতে পারে কিনা। আমার ধারণা আপনার ড্রাইভার নতুন LOB তৈরির পদ্ধতিটি সমর্থন নাও করতে পারে।


4
এর মানে কি Driver does not support LOB featureবা Database does not support LOB feature?
মারেক সেবেরা

@ মেরেকসেবেরা ড্রাইভার আমার এই সমস্যাটি হচ্ছে কারণ একটি প্রাচীন সংস্করণ সহ কিছু আমার রহস্যজনকভাবে আমার C3P0 লাইব্রেরিকে ওভাররাইড করছে। ডাটাবেস এটি ঠিক আছে সমর্থন করে।
নাইয়ারগডস

24

ব্যতিক্রমটি গোপন করার জন্য:

হাইবারনেট ৫.২ (এবং স্প্রিং বুট ২.০) এর জন্য, আপনি অন্যরা যে বিষয়টিকে দেখিয়েছেন ব্যবহার করুন_ jdbc_metadata_defaults ব্যবহার করতে পারেন :

# Meant to hide HHH000424: Disabling contextual LOB creation as createClob() method threw error 
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults: false

অথবা, যদি আপনি উপরের সেটিংসের কোনও পার্শ্ব প্রতিক্রিয়া না দেখতে চান (কিছু মন্তব্য ওরাকল এর পার্শ্ব প্রতিক্রিয়া সম্পর্কে সতর্ক করে, আমি জানি না এটি বৈধ কিনা না) তবে আপনি কেবল ব্যতিক্রমের লগিংটি অক্ষম করতে পারেন :

logging:
   level: 
      # Hides HHH000424: Disabling contextual LOB creation as createClob() method threw error 
      org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl: WARN

21

ব্যতিক্রম থেকে মুক্তি পেতে

INFO - HHH000424: Disabling contextual LOB creation as createClob() method threw error :java.lang.reflect.InvocationTargetException

ইন hibernate.cfg.xmlফাইল সম্পত্তি নিচে যোগ করুন

<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>

4
এটি স্টিভ কে হিসাবে একই উত্তর। কেন আপনি এটি আবার উত্তর?
বেভর

4
@ বিভোর তিনি সমস্যাটি ব্যাখ্যা করেছেন তবে আমি উত্তর দিয়েছি।
উদয়কিরণ পুলিপতি

4
আপনি কেবল ইতিমধ্যে দেওয়া উত্তরটি অনুলিপি করে আপডেটগুলি আদেশ করতে চান। আপনার উত্তর স্টিভ কে এর থেকে আলাদা নয়
বেভর

4
ধন্যবাদ এই উপর ভিত্তি করে, আমি যোগ <property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" /> করতে persistence.xmlফাইল এবং এটা আমার জন্য ইস্যু সমাধান। আমি হাইবারনেট সহ জেপিএ ব্যবহার করি।
dschulz

4
@ আমার মতো একজন নবজাতকের প্রতি সদা হতে এই উত্তরটি আরও স্পষ্ট যে এই সম্পত্তিটি আমার কোথায় রাখা উচিত
আনাতোলি ইয়াকিমচুক

14

হাইবারনেট ৪.৩.x / ৫.০.x ব্যবহারের জন্য আপডেট করুন - আপনি এই সম্পত্তিটিকে ঠিক সত্য হিসাবে সেট করতে পারেন:

<prop key="hibernate.jdbc.lob.non_contextual_creation">true</prop>

ত্রুটি বার্তা থেকে মুক্তি পেতে। একই প্রভাব কিন্তু "ছুঁড়ে দেওয়া ব্যতিক্রম" বিশদ ছাড়াই। বিস্তারিত জানার জন্য লবক্রিটর বিল্ডার উত্স দেখুন।


এটি অধ্যবসায় সেট করুন
xML

10

অ্যাপ্লিকেশন.প্রেটিসগুলিতে কেবল লাইনের নীচে যুক্ত করুন

spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults: false

6

যেমন অন্যান্য মন্তব্য ব্যবহার করে উল্লিখিত

hibernate.temp.use_jdbc_metadata_defaults = false

... বিরক্তিকর বার্তা সংশোধন করবে, তবে আরও অনেক আশ্চর্যজনক সমস্যা দেখা দিতে পারে। এর সাথে প্রাসঙ্গিক LOB সৃষ্টি অক্ষম করার চেয়ে আরও ভাল সমাধান:

hibernate.jdbc.lob.non_contextual_creation = true

এটি হাইবারনেটকে (আমার ক্ষেত্রে এটির 5.3.10. ফাইনাল) জেডিবিসি ড্রাইভারের অনুসন্ধান অনুসন্ধান এবং কেবল নিম্নলিখিত বার্তাকে আউটপুট দেবে:

HHH000421: Disabling contextual LOB creation as hibernate.jdbc.lob.non_contextual_creation is true

এখনও অবধি মনে হচ্ছে এই সেটিংটি কোনও সমস্যা সৃষ্টি করে না।


4

জেডিবিসি ড্রাইভারকে সর্বশেষতম সংস্করণে আপডেট করা বাজে ত্রুটি বার্তাটি সরিয়ে দিয়েছে।

আপনি এখান থেকে এটি ডাউনলোড করতে পারেন:

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html

বিনামূল্যে নিবন্ধকরণ যদিও প্রয়োজন।


4

যদি আপনি সেট করেন:

hibernate.temp.use_jdbc_metadata_defaults: false

যখন আপনার টেবিলের নামটিতে ব্যবহারকারীর মতো সংরক্ষিত শব্দ থাকে তখন এটি পোস্টগ্রিজ এসকিউএল নিয়ে আপনার সমস্যার কারণ হতে পারে। Sertোকানোর পরে এটি এর সাথে আইডি সিকোয়েন্সটি সন্ধান করার চেষ্টা করবে:

select currval('"user"_id_seq');

যা অবশ্যই ব্যর্থ হবে। এটি কমপক্ষে হাইবারনেট 5.2.13 এবং স্প্রিং বুট 2.0.0.RC1 এর সাথে। এই বার্তাটি রোধ করার জন্য অন্য কোনও উপায় খুঁজে পাওয়া যায় নি তাই এখন কেবল এটিকে উপেক্ষা করুন।


2

স্প্রিং বুট ২.১.x এর সাথে কাজ করার সময় অ্যাপ্লিকেশন শুরু করার সময় এই সতর্কতা বার্তাটি উপস্থিত হয়।

এখানে ইঙ্গিত হিসাবে, সম্ভবত এই সমস্যাটি পূর্ববর্তী সংস্করণগুলিতে দেখা যায় নি কারণ সম্পর্কিত সম্পত্তিটি ডিফল্টরূপে সত্যে সেট করা হয়েছিল এবং এখন এটি মিথ্যা:

https://github.com/spring-projects/spring-boot/issues/12007

ফলস্বরূপ, এটিকে সমাধান করা বসন্ত অ্যাপ্লিকেশন.প্রপার্টি ফাইলটিতে নিম্নলিখিত সম্পত্তি যুক্ত করার মতোই সহজ।

spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation = true

এর জন্য ধন্যবাদ. লগ ইনফো মোডে একটি ব্যতিক্রম ট্রেস সত্যিই বিরক্তিকর!
ড্যানিয়েল ফার্নান্দেজ

1

আপনি যথাযথ জেডিবিসি বাছাই না করায় সমস্যা দেখা দেয়। কেবল 11 জি-র পরিবর্তে ওরাকল 10 জি-এর জন্য জেডিবিসি ডাউনলোড এবং ব্যবহার করুন।


হু। এটি বোরিস ব্রডস্কির প্রতিক্রিয়াটিকে সম্পূর্ণ বিপরীতে। আপনি কি নিশ্চিত যে এটি কোনও পার্থক্য করে?
নাইয়ারগডস

1

আমি হাইবারনেট 5.3.17 ব্যবহার করছি এবং প্রদত্ত বৈশিষ্ট্য যুক্ত করে এটি কাজ করে

hibernate.default_entity_mode=dynamic-map
hibernate.temp.use_jdbc_metadata_defaults=true
hibernate.jdbc.lob.non_contextual_creation = true

ধন্যবাদ


0

আমার ওয়েব অ্যাপ্লিকেশনটি যখন লিনাক্সে ব্যবহারকারী অপ্রতুল অ্যাক্সেস অধিকারের সাথে লগ ইন করে শুরু করেছিল তখন আমি এই ত্রুটিটি আঘাত করেছি। এই ত্রুটি

org.hibernate.engine.jdbc.internal.LobCretorBuilder - HHH000424: ক্রিয়েটক্লাব () পদ্ধতি হিসাবে প্রাসঙ্গিক LOB সৃষ্টি অক্ষম করা ত্রুটি ছুঁড়েছে: java.lang.reflect.IvocationTargetException

সাধারণত অন্যান্য ত্রুটি / ব্যতিক্রমগুলির আগে বিশেষত আপনার অ্যাপ্লিকেশন সার্ভার থেকে যেমন টমক্যাটের জন্য:

org.apache.catalina.LifecycleException: উপাদানটি আরম্ভ করতে ব্যর্থ হয়েছে ...

বা

java.lang.UnsatisectedLinkError: ... শেয়ার করা অবজেক্ট ফাইলটি খুলতে পারে না: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই

সমাধান:

  1. আপনার ওয়েব অ্যাপ্লিকেশন বর্তমান উদাহরণ বন্ধ করুন।

  2. সুপার ব্যবহারকারীর সাথে বা পর্যাপ্ত অ্যাক্সেস অধিকারের সাথে রুট হওয়া যেমন রুট root

  3. আপনার ওয়েব অ্যাপ্লিকেশন পুনরায় চালু করুন বা আবার আগের ফাংশনটি কল করুন।


0

স্প্রিং বুট 2 এর সাথে যারা এই সমস্যার মুখোমুখি হন For

ডিফল্টরূপে বসন্ত বুট হাইবারনেট 5.3.x সংস্করণ ব্যবহার করছিল, আমি আমার পম.এক্সএমএলে নিম্নলিখিত সম্পত্তি যুক্ত করেছি

<hibernate.version>5.4.2.Final</hibernate.version>

এবং ত্রুটি চলে গেছে। ত্রুটির কারণ ইতিমধ্যে উপরের পোস্টগুলিতে ব্যাখ্যা করা হয়েছে



-3

আপনি কোনও ভিপিএন-তে নেই কিনা তা পরীক্ষা করে দেখুন। আমারও একই সমস্যা ছিল তবে বুঝতে পেরেছিলাম যে আমি দূরবর্তীতে সংযুক্ত হয়েছি ডিবি!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.