Tôi đang sử dụng bộ dữ liệu với ruby để lưu trữ dữ liệu vào các bảng nhất định.Làm cách nào để cắt bớt bảng đúng cách?
Một số bảng có lượng thông tin rất lớn và tôi muốn xóa chúng khi người dùng 'xây dựng lại cơ sở dữ liệu' (về cơ bản sẽ xóa mọi thứ và tính lại dữ liệu).
Ban đầu tôi đã thử Forum.all.destroy và đã làm nó cho tất cả các bảng khác nhau, nhưng tôi nhận thấy một số người trong số họ chỉ bị xóa khỏi trong phpmyadmin. tôi chỉ có thể tưởng tượng nó vì chìa khóa nước ngoài. Mặc dù tôi thực sự không biết vì bàn khác của tôi mà các phím foreing đã được xóa thành công. Không phải đề cập đến, id thay vì chỉ 'không' nó ra anyway để các phím không nhận được để extraordinarly số lượng lớn (như chính # 500.000).
Sau đó, tôi đã thử chạy nó với mã bên dưới, nhưng nó không xóa bảng vì 'ràng buộc khóa ngoài'. Tôi muốn ép buộc nó hoạt động vì tôi biết thực tế tôi đang xóa tất cả các bảng dựa vào nhau (tôi không chỉ xóa 2 bảng, bảng cài đặt và bảng lưu trữ ngẫu nhiên, không sử dụng bảng nào khóa ngoại).
Cho đến nay tôi có ...
adapter = DataMapper.repository(:default).adapter
adapter.execute('TRUNCATE TABLE `forums`, `dates`, `remarks`');
Đó sẽ là tốt, ngoại trừ cú pháp mysql là sai rõ ràng. thats điều đầu tiên
tôi đã làm nó 1 của 1 trong phpmyadmin và khi tôi đã làm nó theo cách đó nó nói
Cannot truncate a table referenced in a foreign key constraint
bất kỳ ý tưởng nào về cách thực hiện điều này bằng ruby? Tôi đã thử chạy từng lệnh một cách riêng biệt trong ứng dụng và nó không xóa bất cứ điều gì. Sau đó tôi đã thử chạy từng cái một trong phpmyadmin theo thứ tự và nó vẫn nói # 1701 - Không thể cắt ngắn một bảng được tham chiếu trong một ràng buộc khóa ngoài – Tallboy
làm xước! nó hoạt động ... nó chỉ ở đó trong một phần nghìn giây trước khi nó thêm dữ liệu của tôi và tôi đã không bắt nó thực sự cắt ngắn. cảm ơn! – Tallboy
Tôi cắt ngắn bảng con, nhưng thậm chí sau đó nó không thành công trong khi xóa bảng cha. Dù sao, tôi đã sử dụng hack của vô hiệu hóa kiểm tra khóa nước ngoài cho bây giờ. – inquisitive