Ralat Sintaks Tidak Sah "type= MyISAM" dalam DDL Dijana oleh Hibernate
Soalan:
Apabila cuba mencipta jadual dalam MySQL menggunakan Hibernate, saya menemui perkara berikut ralat:
Caused by :`com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException`: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB` server version for the right syntax to use near 'type = `MyISAM`' at line 1
Ralat ini berlaku dalam pertanyaan yang dijana oleh Hibernate:
Hibernate: create table EMPLOYEE (emp_id integer not null, FNAME varchar(255), LNAME varchar(255), primary key (emp_id)) type=MyISAM
Saya telah mencari ralat yang serupa tetapi mendapati bahawa pengguna biasanya menghadapi isu ini semasa menghantar pertanyaan secara manual . Di sini, Hibernate sedang menjana pertanyaan penciptaan jadual. Di manakah saya boleh mencari kesilapan dan bagaimana saya boleh menyelesaikannya?
Jawapan:
Ralat ini berlaku kerana dialek yang digunakan dalam konfigurasi anda sudah lapuk. Dalam Hibernate 5.x dan lebih awal, org.hibernate.dialect.MySQLDialect telah digunakan untuk MySQL 4.x atau lebih awal. Serpihan "TYPE=MYISAM" yang dijana oleh dialek ini telah ditamatkan penggunaannya dalam MySQL 4.0 dan dialih keluar pada 5.5.
Untuk menyelesaikan isu ini, anda perlu mengemas kini dialek dalam konfigurasi Hibernate anda. Jika anda menggunakan MariaDB, bergantung pada versinya dan versi Hibernate, anda boleh menggunakan salah satu daripada dialek berikut:
Jika anda menggunakan MySQL atau dialek MariaDB yang dinyatakan di atas tidak wujud dalam versi Hibernate anda, anda boleh menggunakan salah satu daripada yang berikut dialek:
Nota: Dalam Hibernate 6, anda boleh menggunakan MySQLDialect atau MariaDBDialect sekali lagi, sebagai Hibernate 6 dialects mengkonfigurasi sendiri berdasarkan versi yang disambungkan.
Atas ialah kandungan terperinci Mengapa Hibernate menjana 'Ralat Sintaks Tidak Sah' dengan 'jenis=MyISAM' semasa membuat jadual MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!