2011-12-19 7 views
6

Cơ sở dữ liệu của tôi hiện đang sử dụng công cụ InnoDB. Bây giờ tôi muốn thêm tính năng tìm kiếm toàn văn bản, đó là lý do tại sao tôi muốn chuyển đổi bảng của mình thành MyISAM. Nhưng làm như vậy phá vỡ tất cả các phím nước ngoài. Làm thế nào tôi có thể thay đổi công cụ bảng của tôi thành MyISAM một cách an toàn?Cách an toàn nhất để chuyển đổi bảng với InnoDB thành MyISAM là gì?

Làm cách nào tôi có thể sử dụng SELECT ... THAM GIA sau khi tôi thay đổi bảng của mình thành công cụ MyISAM?

ALTER TABLE jobs ENGINE = MyISAM; 
Cannot delete or update a parent row: a foreign key constraint fails 

Trả lời

6

tôi muốn khuyên bạn nên làm một bãi chứa của db, thay đổi tất cả các văn bản từ tập tin đó từ InnoDB để MyISAM, sau đó tải các tập tin sửa đổi

4

Như tôi biết, MyISAM không hỗ trợ khóa ngoại (so sánh các tính năng được cung cấp bởi InnoDB so với các tính năng của MyISAM). MySQL cố gắng nói với bạn rằng bạn phải loại bỏ mọi ràng buộc khóa ngoài tham khảo bảng jobs của bạn trước khi thay đổi công cụ của nó thành MyISAM.

+0

Tôi đã có thông báo lỗi tương tự khi chuyển đổi bảng và ngay sau khi tôi xóa tất cả các ràng buộc khóa ngoài, chuyển đổi hoạt động hoàn hảo. Vì vậy, nó chính xác như Kohanyi nói! (hãy suy nghĩ về những gì bạn đang làm trước khi xóa chúng ... trong trường hợp của tôi, các ràng buộc là vô dụng, nhưng trong một số trường hợp họ có thể có lý do (để đảm bảo tính toàn vẹn DB nếu một số ứng dụng bị lỗi?) ;-) – lucaferrario