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
Lepaskan: 2024-12-04 18:59:12
asal
236 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan