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:
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>
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!