مشكلة السبات Oracle 11G
سؤال
أنا أغير قاعدة البيانات الخاصة بي من postgresql إلى أوراكل 11G. أنا أستخدم السبات 3.0 مع جافا والغربات.
كل شيء يعمل بشكل جيد مع postgresql.
لقد غيرت التالية في ملف Hibernate.cfg.xml.
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.password">mypassword</property>
<property name="hibernate.connection.url">jdbc:Oracle:thin:@192.168.1.1:1521/mydb</property>
<property name="hibernate.connection.username">my_user</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
كل شيء آخر هو نفسه كما كان في postgresql.
أنا أستخدم OJDBC5.JAR
الآن عندما أقوم بتشغيل صفحتي، فإنها تعطيني الخطأ.
ORA-00903: اسم جدول غير صالح
هل يمكن لأي شخص مساعدتي فيما يتعلق بالمسألة؟
شكرًا.
المحلول
من المرجح أن يكون أحد الحالتين:
- أنت توصل كمستخدم آخر غير مالك الجدول ولا يمكن حل الاسم.
- هناك مشكلة في حساسية الحالة في الإشارة إلى اسم الجدول في التعليمات البرمجية أو اسمها الفعلي.
إذا لم تكن مالك الجدول (ولكن لديك منح للوصول إليها!)، فستحتاج إما أن يكون لديك مرادف أوراكل يترجم مرجعا إلى mytable في the_actual_owner.mytable، أو مرجع مؤهل المخطط مباشرة في التعليمات البرمجية الخاصة بك.
الحالة الثانية أقل احتمالا، ولكن في بعض الأحيان ستقوم البرامج النصية بإنشائها في بعض الأحيان كائنات في Oracle مع علامات اقتباس مزدوجة حول اسم الكائن، والذي سيسمح لإنشاء معرف مختلط الحالة - إنشاء جدول "mytable" سيخلق معرف الحالة المختلط الذي يجب أن يكون بعد ذلك تمت الإشارة إليها بواسطة سلسلة الحالة المختلطة.
لتزويدنا بمعلومات إضافية، قم بالتواصل مع نوع من أداة SQL AD-HOC نفس المستخدم مثل تطبيقك ونشر نتائج:
حدد المالك، table_name من all_tables حيث table_name = 'thenameofthetableofinterest'؛
نصائح أخرى
ومع ذلك، من المحتمل أن يكون DPBradley صحيحا، وأعدت فقط إلى المشكلة التالية مع 11G والإسبات: - سيتيح لك Oracle 11G تحديد جدول باسم أكبر من 30 حرفا - ومع ذلك، لا يمكنك الرجوع بالفعل إلى هذا الجدول في SQL بيان لأن اسمها طويل جدا.
- لا يبدو أن DDL الإئنات المولدة إخراج الإخراج يهتم أو تحذر عند إنشاء DDL