Như đã đề cập trong các ý kiến, bạn phải thả bất kỳ bảng với contraints FK các bảng khác, trước tiên, sau đó bạn có thể thả các bảng được liên kết đến.
Ví dụ:
User
id: 1
name: Mike
Address
id: 1
user_id: 1 (FK constraint to User.id table.column)
address_1: 555 Main Street
Thiết lập này là 1: mối quan hệ 1 (more on data normalization), nơi mà một người sử dụng hàng có thể tham khảo một dòng địa chỉ, và vì dòng địa chỉ phụ thuộc vào sự tồn tại của hàng của người dùng, nếu bạn cố xóa hàng người dùng, bạn sẽ thấy các lỗi bạn đã đề cập.
Nhưng nếu bạn thả bảng Địa chỉ trước, mọi thứ hoạt động như mong đợi vì bảng Người dùng không phải là FK cho bất kỳ bảng nào khác.
Đảm bảo referential integrity trong lược đồ của bạn đảm bảo bạn không kết thúc với các hàng mồ côi, các hàng này sẽ tràn ngập trong suốt ứng dụng hướng dữ liệu của bạn.
Bạn cũng có thể dùng các lệnh sau:
SET foreign_key_checks = 0;
# Do Stuff
SET foreign_key_checks = 1;
Nhưng tôi mạnh mẽ sẽ tư vấn cho chống lại điều này, như bạn có thể phá vỡ sự toàn vẹn tham chiếu của dữ liệu của bạn, và kết thúc trong một mớ hỗn độn thật. Tôi đã nhìn thấy ai đó làm điều này trong một môi trường doanh nghiệp và phải mất vài tuần để làm sạch nó. Tuy nhiên, nếu bạn đang thực hiện điều này STRICTLY cho mục đích thử nghiệm; như viết bài kiểm tra đơn vị, hoặc chỉ học tập, và bạn không muốn thả các bảng mọi thời gian, bạn có thể làm điều này:
# Because we remove the foreign key check, we can truncate in any order
SET foreign_key_checks = 0;
TRUNCATE TABLE user;
TRUNCATE TABLE address;
SET foreign_key_checks = 1;
schema thiết kế đúng cách sử dụng ràng buộc khoá ngoại đi dọc theo con đường để xây dựng một nền tảng tốt cho bất kỳ ứng dụng điều khiển dữ liệu nào. Nó sẽ mất thời gian để có được đầu của bạn xung quanh khi sử dụng, và làm thế nào để xây dựng những khó khăn chính nước ngoài, nhưng theo thời gian, bạn sẽ bắt đầu hiểu. Một cách hay để bắt đầu là tải xuống dự án nguồn mở như magento, wordpress hoặc vbulletin và xem xét các lược đồ của chúng. Bạn thậm chí có thể quan sát các lược đồ này bằng cách sử dụng MySQL workbench và xem Entity-Relationship Diagrams (ERDs) của chúng, sẽ minh họa trực quan các liên kết giữa các bảng.
Tại sao bạn không chỉ là 'TRUNCATE'? – zerkms
xem chỉnh sửa theo câu hỏi – user61629
Thử giảm/cắt bớt temp_workers trước, vì nó có ràng buộc FK đối với bảng tạm thời, sau đó là bảng tạm thời. –