2012-02-04 48 views
5

Hiện tại loại lưu trữ của bảng là innodb, tôi muốn thêm tìm kiếm toàn văn trên bảng chỉ có thể trên động cơ MYISAM. tôi đã cố gắng sử dụng lệnh =>alter table film engine = myisam; và đã nhận lỗi:Thay đổi công cụ lưu trữ của bảng trong Mysql

1217 - Cannot delete or update a parent row: a foreign key constraint fails 

Xin giúp !! Cảm ơn.

+0

Xóa tất cả ràng buộc khóa ngoại. Nhưng bạn nên tạo một bảng khác với trường văn bản của bạn thay vì – zerkms

+0

Bạn không cần phải thay đổi bảng đó thành công cụ MyIsam tốt hơn để có một bảng MyIsam mới –

Trả lời

6

Bạn phải tìm các bảng trong cơ sở dữ liệu tham khảo bảng này thông qua một hạn chế FK:

Xác định các ràng buộc khoá ngoại cho bảng. Hoặc sử dụng

SHOW CREATE TABLE `table_in_db_film`\G; 

hoặc

USE db_of_film_table; 
SHOW TABLE STATUS LIKE 'film'\G 

sau đó thực hiện những điều khoản cần thiết

ALTER TABLE film DROP FOREIGN KEY `ibfk_something`; 

cho đến khi bạn thả tất cả các ràng (tất nhiên thay thế ibfk_something với những cái tên khó khăn của bạn). Sau đó, bạn sẽ có thể thay đổi công cụ bảng.

2

Bạn không thể thay đổi công cụ của bảng thành MyISAM mà không xóa các ràng buộc khóa ngoài và do đó mất tính toàn vẹn.

Sẽ tốt hơn nếu sử dụng cả hai công cụ, MyISAM và InnoDB. Giữ tất cả dữ liệu trong InnoDB và sao chép bảng (hoặc chỉ các cột bạn muốn tìm kiếm toàn văn) trong MyISAM. Điều này sẽ cần một số cơ chế (trình kích hoạt) để sao chép dữ liệu được tự động hóa.

Các tùy chọn khác tại đây: MySQL storage engine dilemma

Các vấn đề liên quan