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

Làm cách nào để khắc phục lỗi InnoDB khóa tên bảng khỏi quá trình tạo (errno:-1) trên AWS RDS?

DDL trong InnoDB không phải là giao dịch nên có thể thông tin trong tệp .frm và từ điển InnoDB khác nhau. Trong trường hợp của bạn, có vẻ như tệp .frm bị thiếu nhưng có một bản ghi không có trong từ điển (thực ra là các bản ghi trong một vài bảng SYS_ * từ điển).

Bạn không thể dễ dàng xóa một bản ghi khỏi từ điển. Bạn cần một tệp .frm tương ứng để MySQL chuyển DROP của bạn đến cấp InnoDB. Với RDS, bạn không thể làm điều đó.

Nhưng bạn có thể DROP toàn bộ cơ sở dữ liệu. Trong trường hợp đó, InnoDB sẽ xóa tất cả các bản ghi khỏi từ điển bao gồm cả bản ghi không có.

Vì vậy, để làm sạch từ điển của bạn, tôi khuyên bạn nên làm như sau:

  1. Dừng tất cả lưu lượng truy cập vào MySQL, đặt nó ở chế độ chỉ đọc
  2. Tạo cơ sở dữ liệu tạm thời adstudio_tmp
  3. RENAME tất cả các bảng từ adstudio tới adstudio_tmp
  4. DROP DATABASE adstudio . Tại thời điểm này, nó trống rỗng. DROP sẽ xóa tất cả các mục trong từ điển InnoDB.
  5. RENAME tất cả các bảng trở lại từ adstudio_tmp tới adstudio

Sau đó, từ điển sẽ sạch và bạn sẽ có thể tạo data_feed_param của mình .

Tôi đã mô tả sự cố tương tự sau khi ALTER không thành công BẢNG . Kiểm tra nó để biết thêm chi tiết.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để hủy thao tác INSERT trong trình kích hoạt MySql?

  2. Chuỗi nối thêm MySQL

  3. Thay thế \ r \ n (ký tự dòng mới) sau khi chạy json_encode

  4. Tại sao bạn không nên sử dụng CONCAT () cho các ký tự chuỗi tĩnh?

  5. CHÈN nhiều bản ghi bằng bản ghi hoạt động ruby ​​on rails