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

Lỗi:Không gian bảng cho bảng xxx tồn tại. Vui lòng XÓA không gian bảng trước khi NHẬP

Ở đây hơi muộn nhưng nói chung tôi đã thấy sự cố này xảy ra khi bạn gặp lỗi 'đầy không gian bảng' khi chạy ở chế độ 'innodb_file_per_table'. Không đi vào quá nhiều chi tiết (thêm tại đây ), vùng bảng của máy chủ cơ sở dữ liệu được xác định bởi cài đặt innodb_data_file_path và theo mặc định là khá nhỏ. Ngay cả khi được làm lớn hơn, 'không gian bảng đầy' vẫn có thể xảy ra với các truy vấn lớn hơn và như vậy (rất nhiều 'nội dung' không phải bảng được lưu trữ trong đó, hoàn tác nhật ký, bộ nhớ đệm, v.v.).

Tuy nhiên, tôi thấy rằng nếu bạn tìm trong thư mục OS nơi lưu trữ tệp trên mỗi bảng, / var / lib / mysql theo mặc định trên OSX, / usr / local / var / mysql với homebrew iirc, bạn sẽ tìm thấy tệp tablename.ibd mồ côi mà không có tệp tablename.frm đồng hành bình thường. Nếu bạn di chuyển tệp .ibd đó đến một vị trí tạm thời an toàn (chỉ để an toàn) sẽ khắc phục được sự cố.

$ ls /var/lib/mysql

table1.frm
table1.idb
table2.frm
table2.idb
table3.idb <- problem table, no table3.frm
table4.frm
table4.idb

$ mkdir /tmp/mysql_orphans
$ mv /var/lib/mysql/table3.ibd /tmp/mysql_orphans/

Tuy nhiên, một lưu ý, hãy đảm bảo nguyên nhân gây ra sự cố, ví dụ:truy vấn đang chạy lâu, bảng bị khóa, v.v ... đã bị xóa. Nếu không, bạn chỉ kết thúc với một tệp .ibd mồ côi khác khi bạn thử lại lần thứ hai.



  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 thế nào để có được bản ghi với giá trị tối đa trong MySQL

  2. Làm thế nào để tìm khoảng trống trong đánh số tuần tự trong mysql?

  3. Làm cách nào để thoát khỏi dấu nháy đơn (') trong MySql?

  4. MySQL MONTHNAME () từ các số

  5. Ngoại lệ:Đã có một DataReader đang mở được liên kết với Kết nối này trước tiên phải được đóng lại