Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Grails:lỗi trong cú pháp SQL khi thay đổi phương ngữ ngủ đông

Tại sao bạn muốn sử dụng MyISAM ??? Nó không hỗ trợ khóa hoặc giao dịch nước ngoài. Và nó hiếm khi nhanh hơn InnoDB vì InnoDB sử dụng khóa hàng và MVCC, trái ngược với khóa toàn bảng của MyISAM.

Có nói rằng, bạn có thể làm cho điều này làm việc. Bạn phải đang sử dụng phiên bản MySQL mới hơn kể từ loại type thuộc tính đã không được chấp nhận trong một thời gian và hiện không được hỗ trợ - bạn phải sử dụng ENGINE thay thế. Không có phương ngữ nào hỗ trợ điều này (lưu ý rằng org.hibernate.dialect.MySQL5InnoDBDialect làm điều đúng đắn cho InnoDB), vì vậy bạn cần phải tạo của riêng mình.

Tạo lớp này trong src / groovy hoặc src / java (thay đổi gói và / hoặc tên lớp):

package com.mycompany.myapp

import org.hibernate.dialect.MySQLMyISAMDialect

class MySQL5MyISAMDialect extends MySQLMyISAMDialect {
   String getTableTypeString() {
      " ENGINE=MyISAM"
   }
}

và tham chiếu nó trong DataSource.groovy như bạn đã hiển thị trong câu hỏi của mình:

dialect = com.mycompany.myapp.MySQL5MyISAMDialect



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Nhiều tham gia trong một truy vấn?

  2. Sự khác biệt giữa lược đồ / cơ sở dữ liệu trong MySQL

  3. Cập nhật MySQL mà không chỉ định tên cột

  4. Làm cách nào để ánh xạ một loại bit trong Mysql sang chế độ ngủ đông?

  5. Kết quả MySQL dưới dạng danh sách được phân tách bằng dấu phẩy