Rumah >pangkalan data >tutorial mysql >Mengapa Hibernate menjana 'Ralat Sintaks Tidak Sah' dengan 'jenis=MyISAM' semasa membuat jadual MySQL?

Mengapa Hibernate menjana 'Ralat Sintaks Tidak Sah' dengan 'jenis=MyISAM' semasa membuat jadual MySQL?

DDD
DDDasal
2024-12-04 18:59:12271semak imbas

Why does Hibernate generate an

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:

  • org.hibernate.dialect.MariaDBDialect
  • org.hibernate. dialek.MariaDB53Dialek
  • org.hibernate.dialect.MariaDB106Dialect (atau lebih tinggi)

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:

  • org.hibernate.dialect.MySQL5Dialect
  • org.hibernate.dialect.MySQL55Dialect
  • org.hibernat e.dialek.MySQL57Dialect
  • org.hibernate.dialect.MySQL8Dialect
  • org.hibernate.dialect.MySQL57InnoDBDialect (atau varian)

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!

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