Rumah > pangkalan data > tutorial mysql > Mengapa Hibernate Menjana Sintaks 'type=MyISAM' yang tidak sah dalam MySQL/MariaDB dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Hibernate Menjana Sintaks 'type=MyISAM' yang tidak sah dalam MySQL/MariaDB dan Bagaimana Saya Boleh Membetulkannya?

Mary-Kate Olsen
Lepaskan: 2024-11-22 08:37:11
asal
195 orang telah melayarinya

Why Does Hibernate Generate Invalid

Ralat sintaks tidak sah "type= MyISAM" dalam DDL yang dihasilkan oleh Hibernate

Apabila mencipta jadual dalam Hibernate menggunakan MySQL sebagai pangkalan data asas, anda mungkin menghadapi ralat yang menyatakan "Anda mempunyai ralat dalam sintaks SQL anda; semak manual yang sepadan dengan versi pelayan MariaDB anda untuk betul sintaks untuk digunakan berhampiran 'type = MyISAM' pada baris 1."

Punca:

Ralat ini biasanya berlaku kerana dialek MySQLDialect yang digunakan untuk menjana definisi jadual bukan sesuai untuk versi MySQL atau MariaDB yang anda gunakan. Dalam versi Hibernate 5.x dan lebih awal, MySQLDialect direka untuk MySQL 4.x atau lebih awal, yang termasuk sintaks "jenis = MyISAM". Walau bagaimanapun, dalam MySQL 5.5 dan kemudian, sintaks ini ditamatkan dan perlu digantikan dengan "ENGINE = MyISAM."

Penyelesaian:

Untuk menyelesaikan ralat ini, anda harus mengemas kini dialek yang digunakan oleh Hibernate kepada yang serasi dengan versi pangkalan data anda:

  • Untuk MySQL 5.5 dan lebih baru, gunakan dialek seperti MySQL5Dialect, MySQL55Dialect atau MySQL8Dialect.
  • Untuk MariaDB, gunakan dialek seperti MariaDBDialect atau MariaDB53Dialect (bergantung pada versi MariaDB).

Konfigurasi:

Dalam konfigurasi yang disediakan fail, anda menggunakan org.hibernate.dialect.MySQLDialect, yang tidak sesuai untuk MySQL 5.5 atau lebih baru. Anda perlu mengemas kini konfigurasi untuk menggunakan salah satu dialek yang serasi yang dinyatakan di atas. Contohnya:

<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
Salin selepas log masuk

Nota untuk Hibernate 6:

Dalam Hibernate 6, dialek akan mengkonfigurasi sendiri berdasarkan versi yang disambungkan sebenar. Oleh itu, jika anda menggunakan Hibernate 6, anda harus kembali menggunakan MySQLDialect atau MariaDBDialect.

Atas ialah kandungan terperinci Mengapa Hibernate Menjana Sintaks 'type=MyISAM' yang tidak sah dalam MySQL/MariaDB dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan