Lỗi: Không gian bảng cho bảng xxx tồn tại. Vui lòng KHÁM PHÁ không gian bảng trước khi nhập


134

Tôi còn khá mới với MySQL và tôi đang gặp một lỗi khá thú vị mà tôi không thể tìm thấy bất kỳ trợ giúp nào thông qua google và tìm kiếm stackoverflow.

Tôi đang chạy một máy chủ cục bộ của MySQL 5.6.10 trên MacOS 10.8.3 và quản lý cơ sở dữ liệu của tôi thông qua các yếu tố cần thiết cho Navicat cho MySQL.

Lỗi tôi nhận được là sau khi chạy và quản lý cơ sở dữ liệu của tôi chỉ trong vài ngày / tuần, một cái gì đó kích hoạt (nó xuất hiện không đầy đủ) xóa một số bảng tôi đã tạo bằng các truy vấn từ trong Navicat.

Khi tôi cố chạy các truy vấn bằng các bảng này, Navicat sẽ cảnh báo tôi rằng bảng cụ thể không tồn tại. Cho đến nay rất tốt - đây là phần tốt:

Khi tôi cố gắng TẠO bảng, ví dụ như "temp", trước đó đã có, tôi nhận được thông báo lỗi sau:

Error : Tablespace for table '`database`.`temp`' exists. Please DISCARD the tablespace before IMPORT.

Tuy nhiên, nếu tôi cố gắng bỏ bảng hoặc cố gắng loại bỏ không gian bảng cho bảng này, sử dụng

DROP TABLE temp;
ALTER TABLE temp DISCARD TABLESPACE;

Tôi nhận được các thông báo lỗi sau:

Error : Unknown table 'database.temp'
Error : Table 'database.temp' doesn't exist

Vì vậy, điều đó có nghĩa là tôi được khuyên nên loại bỏ không gian bảng nhưng khi tôi cố gắng làm như vậy thì bảng không tồn tại. Có thể có một số loại tàn dư của bảng này ở một nơi khác mà truy vấn DISCARD không kiểm tra không? Và có ai có ý tưởng gì có thể kích hoạt tất cả những thứ đó - hoàn toàn ngẫu nhiên như nó có vẻ không?

Như tôi đã nói, tôi chưa quen với chủ đề này và gần như không biết gì. Tôi nghi ngờ rằng việc khởi động lại máy tính xách tay của tôi, tức là đặt lại máy chủ MySQL cục bộ của tôi hoặc có thể quyền của người dùng có thể phải thực hiện với nó, nhưng tôi chỉ đưa ra giả thuyết ở đây.


Bạn có thể kiểm tra một số giải pháp cho loại lỗi này. Codepeaker.com/laravel-framework/ từ
smzapp

Câu trả lời:


123

Ở đây hơi muộn nhưng nhìn chung tôi đã thấy sự cố này xảy ra khi bạn gặp lỗi 'toàn bộ không gian bảng' khi chạy ở chế độ 'innodb_file_per_table'. Không đi sâu vào chi tiết (nhiều hơn ở đây ), không gian 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' bảng 'được lưu trữ trong đó, hoàn tác các bản ghi, bộ đệm, v.v.).

Dù sao, tôi thấy rằng nếu bạn tìm trong thư mục HĐH 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 sự cố.

$ ls /var/lib/mysql

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

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

Mặc dù vậy, hãy cẩn thận, đảm bảo những gì đã gây ra sự cố ban đầu, ví dụ: truy vấn chạy dài, 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ần thứ hai.


5
Thư mục MySQL-Data của tôi trên OS X Yosemite được lưu trữ /usr/local/mysql/datathay vì /var/lib/mysql/. Nếu không thì giải quyết hoàn hảo vấn đề.
Alex Hoppen

13
trong trường hợp của tôi nó không hoạt động ... Tôi đã xóa tệp idb mồ côi ... và khi tôi đi tạo lại bảng với cùng tên tôi nhận được một thông báo nói rằng bảng đã tồn tại (tôi đã xóa .idb tệp) ... sau hành động trên, một tệp .idb mồ côi mới đã được tạo trong thư mục ... rất lạ ... Tôi thực sự không biết phải giả định điều gì.
Dimitris Papageorgiou

4
Tôi có cùng một vấn đề với Dimitris - Tôi đã phải tạo một bãi chứa từ cơ sở dữ liệu, bỏ cơ sở dữ liệu và khôi phục nó từ bãi chứa.
Gerfried

1
@Gerfried Điều này làm việc với tôi miễn là tôi dừng và bắt đầu quá trình MySQL sau khi xóa tệp.
MER

2
@DimitrisPapageorgiou Điều này hiệu quả với tôi miễn là tôi dừng và bắt đầu quá trình MySQL sau khi xóa tệp.
MER

76

Người dùng Xampp và Mamp

Có lỗi tương tự trong khi nhập cơ sở dữ liệu (sau khi làm trống) máng MySQL. Tôi thấy rằng tôi có một tablename.ibdtập tin còn lại trong khi tất cả những người khác đã bị xóa. Tôi đã xóa nó bằng tay mysql/data/database_namevà lỗi đã biến mất.


Câu trả lời này có giúp những người không sử dụng XAMPP không?
Technotronic

3
giơ ngón tay cái lên từ tôi! làm việc tốt. Tuy nhiên, cho phép tôi cập nhật một chút về đường dẫn của thư mục cho tôi (đã bối rối khi cố tìm nó): / Ứng dụng / XAMPP / xamppfiles / var / mysql
Fenix ​​Aoras

sử dụng điều này đã phát triển một lỗi 168 từ công cụ lưu trữ trong linux mint, không sử dụng Xampp hay Mamp (không chỉ trích, chỉ thông báo)
Steven

1
làm! tôi đã xóa một tập tin .ibd bị hỏng và sau đó bảng có thể được tạo lại. Ubuntu 16, mariadb
waza123

Tương tự với Docker (nếu docker gặp sự cố hoặc khởi động lại máy chủ, bạn có thể có ngày chết trong thư mục đồng bộ hóa tạo ra lỗi này)
Sliq 15/03/19

23

Đối với người dùng WAMP [Windows 7 Ultimate x64-bit]:

Tôi đồng ý với những gì DangerDave đã nói và vì vậy tôi đang đưa ra câu trả lời cho Người dùng WAMP .

Lưu ý: Trước hết, bạn phải truy cập vào thư mục .. \ WAMP \ Bin \ MySQL \ MySQL [Phiên bản MySQL của bạn] \ Dữ liệu .

Bây giờ, bạn sẽ thấy các thư mục của tất cả các cơ sở dữ liệu của bạn

  • Bấm đúp vào thư mục của cơ sở dữ liệu có bảng vi phạm để mở nó
  • Không nên có một tập tin [Your offending MySQL table name].frm, thay vào đó nên có một tập tin[Your offending MySQL table name].ibd
  • Xóa [Your offending MySQL table name].ibd
  • Sau đó, cũng xóa nó khỏi Thùng rác
  • Sau đó chạy truy vấn MySQL của bạn trên cơ sở dữ liệu và bạn đã hoàn tất

22

Nếu bạn nhận được .idbmột lần nữa sau khi bạn xóa nó, sau đó đọc câu trả lời này.

Đây là cách nó làm việc với tôi. Tôi đã có .idbtệp mà không có nó tương ứng .frmvà bất cứ khi nào tôi xóa .idbtệp, cơ sở dữ liệu sẽ tạo lại nó. và tôi đã tìm thấy giải pháp trong một dòng trong tài liệu MySQL (Phần không gian bảng không tồn tại )

1- Tạo một tệp .frm phù hợp trong một số thư mục cơ sở dữ liệu khác và sao chép nó vào thư mục cơ sở dữ liệu nơi đặt bảng mồ côi.

2- Phát hành BẢNG DROP cho bảng gốc. Điều đó sẽ hủy bảng thành công và InnoDB sẽ in cảnh báo đến nhật ký lỗi mà tệp .ibd bị thiếu.

Tôi đã sao chép một .frmtệp bảng khác và đặt tên nó giống như bảng bị thiếu của tôi, sau đó tạo một truy vấn bảng thả bình thường và voila, nó hoạt động và bảng được loại bỏ bình thường!

hệ thống của tôi là XAMPP trên windows MariaDB v 10.1.8


3
Trong trường hợp điều này không rõ ràng với bất kỳ ai khác: khi bạn đã tạo tệp .frm và thả bảng, tệp .idb phải bị xóa.
Narretz

6
Có thể xác nhận, các bước nên là: 1. xóa mysql / path / table_name.idb 2. thêm table_name.frm 3. DROP table_name
Jeremy Dennen

Điều này làm việc cho tôi. Cảm ơn. Tôi đã gặp lỗi này trong khi xóa FK và ngay sau đó, tôi đã dừng mysql. Tôi nghĩ rằng bảng này dữ liệu def của tôi bị hỏng.
Rodolfo Velasco

nhớ khởi động lại mysql sau khi đặt tệp, sau đó thử thả nó
Seyed Ali Roshan

Trong mysql> data> mysql, có một tệp .frm tôi cần. Tôi có thể sao chép cái này không?
Timo

8

Trong trường hợp của tôi, giải pháp công việc duy nhất là:

  1. TẠO bad_tableĐỘNG CƠ BẢNG = MyISAM ...
  2. rm bad_table.ibd
  3. BẢNG DROP bad_table

Đã làm cho tôi! [ERROR] InnoDB: Tệp './dbname/tablename.ibd' đã tồn tại mặc dù bảng tương ứng không tồn tại trong từ điển dữ liệu InnoDB. Bạn đã di chuyển các tệp InnoDB .ibd xung quanh mà không sử dụng các lệnh SQL DISCARD TABLESPACE và NHẬP TABLESPACE, hoặc đã bị lỗi mysqld ở giữa CREATE TABLE? Bạn có thể giải quyết vấn đề bằng cách xóa tệp './dbname/tablename.ibd' trong 'datadir' của MySQL.
PAdrian 29/03/18

1
Không thể tạo bảng khi Không gian bảng tồn tại.
Liam Mitchell

nó không làm việc cho tôi Tập tin ibd tiếp tục xuất hiện sau khi tôi muốn tạo lại bảng với cùng một công cụ.
Fajar Rukmo

8

Đây chính xác là những gì tôi đã làm trong mariadb 10.2.16 trên fedora khi tôi có một bảng hiển thị chính xác các lỗi tương tự trong tệp nhật ký mà tôi cho là ...

2018-07-11  9:43:58 140323764213504 [Note] InnoDB: The file './database_name/innodb_table.ibd' already exists though the corresponding table did not exist in the InnoDB data dictionary. You can resolve the problem by removing the file.
2018-07-11  9:44:29 140323764213504 [Warning] InnoDB: Tablespace 'database_name/innodb_table' exists in the cache with id 2836 != 2918

số dặm và lỗi của bạn có thể thay đổi nhưng cái chính tôi giả sử là

...already exists though the corresponding table did not exist in the InnoDB data dictionary...

với bảng thả không hoạt động cũng như bảng thay đổi ...

MariaDB [database_name]> drop table innodb_table;
ERROR 1051 (42S02): Unknown table 'database_name.innodb_table'

MariaDB [database_name]> alter table innodb_table discard tablespace;
ERROR 1146 (42S02): Table 'database_name.innodb_table' doesn't exist

tạo bảng cũng thất bại như vậy:

MariaDB [database_name]> create table  innodb_table(`id` int(10) unsigned NOT NULL);
ERROR 1813 (HY000): Tablespace for table '`database_name`.`innodb_table`' exists. Please DISCARD the tablespace before IMPORT

để khắc phục điều này, những gì tôi đã làm trước tiên

create table  innodb_table2(`id` int(10) unsigned NOT NULL);
Query OK, 0 rows affected (0.07 sec)

sau đó trong thư mục / var / lib / mysql / database_name tôi đã làm như sau khi root thừa nhận việc ghi đè innodb_table.ibd gây ra sự cố cho chúng tôi

cp -a innodb_table2.frm innodb_table.frm
cp -a innodb_table2.ibd innodb_table.ibd
systemctl restart mariadb

sau đó quay trở lại trong bảng điều khiển mysql tôi đã ban hành lệnh thả thành công trên cả hai bảng

MariaDB [database_name]> drop table innodb_table;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    8
Current database: database_name

Query OK, 0 rows affected (0.08 sec)

MariaDB [database_name]> drop table innodb_table2;
Query OK, 0 rows affected (0.25 sec)

và mọi thứ bây giờ đều là hình vuông và tôi có thể tạo lại một bảng duy nhất ...

MariaDB [database_name]> create table  innodb_table (`id` int(10) unsigned NOT NULL);
Query OK, 0 rows affected (0.08 sec)

EDIT: Tôi sẽ thêm vào một

restorecon -Rv /var/lib/mysql/database_name 

lệnh sau khi sao chép cơ sở dữ liệu để có được tất cả các bối cảnh selinux theo cách chúng cần, mặc dù chúng tôi đang xóa chúng khỏi cơ sở dữ liệu gần như ngay lập tức, nhưng trong phương án thay thế, bạn chỉ có thể thêm tùy chọn --archive hoặc -a vào hai cp các lệnh, vì vậy, thực sự có tùy chọn lưu trữ rút ngắn điều này:

cp innodb_table2.frm innodb_table.frm
cp innodb_table2.ibd innodb_table.ibd
chown mysql:mysql innodb_table.frm innodb_table.ibd
chmod 660 innodb_table.frm innodb_table.ibd
restorecon -Rv /var/lib/mysql/database_name
systemctl restart mariadb

theo cách sau mà tôi nghĩ là tốt hơn và nó giữ bối cảnh selinux được đặt cho bảng đã tạo.

cp -a innodb_table2.frm innodb_table.frm
cp -a innodb_table2.ibd innodb_table.ibd
systemctl restart mariadb

Tôi đã thay thế danh sách lệnh dài hơn ở trên cho danh sách ngắn hơn có thể rút ngắn bằng *


Điều này hoạt động tốt với tôi trên CentOS MariaDB 10.2.31. Tôi đang tìm kiếm một giải pháp không yêu cầu khởi động lại dịch vụ MySQL và đây là giải pháp. Khóa này tạo ra tập hợp các tệp innodb_table2 sạch (innodb_table2.frm và innodb_table2.ibd) và đặt cả hai tệp lên trên các tệp innodb_table.
Justin

6

Trong trường hợp của tôi:

Đầu tiên xóa tableName.ibdtrong thư mục cơ sở dữ liệu của bạn từ Mysql và lần chạy thứ hai:

ALTER TABLE tableName DISCARD TABLESPACE;
DROP TABLE tableName;

Cảm ơn, trong trường hợp của tôi, tôi đã dừng 1) máy chủ cơ sở dữ liệu (dừng dịch vụ mysql) 2) đã xóa tệp idb 3) đã khởi động máy chủ cơ sở dữ liệu (bắt đầu dịch vụ mysql) Không chạy thay đổi và bỏ truy vấn
lemk0

Thư mục cơ sở dữ liệu của bạn trong Windows nằm trong C: \ ProgramData \ MySQL theo mặc định
Rodin10

4

Tôi đã gặp lỗi tương tự khi chạy nó trên wamperver trong khi cố gắng tạo bảng người dùng. Tôi đã tìm thấy tệp users.ibd và sau khi tôi xóa tệp này, tôi chạy lại lệnh di chuyển và nó đã hoạt động. Tệp trên máy tính windows của tôi nằm trong wamp / bin / mysql / mysql5.6.12 / data / myproject.


4

Giải pháp

Tuy nhiên, tùy chọn dễ dàng hơn là: khởi động lại MySQL, sau đó thực hiện bốn bước tương tự như sau:

1) created a dummy table in the database;
2) discarded its tablespace;
3) moved the .ibd file into the database folder on the system;
4) attached the tablespace back to the table

Bằng cách này, id vùng bảng trên từ điển dữ liệu và tệp khớp với nhau; do đó, việc nhập không gian bảng đã thành công.

Điều này có thể giúp bạn tự tin hơn khi xử lý một số "gotcha" của InnoDB trong quá trình khôi phục hoặc thậm chí chuyển tệp.

tham chiếu


7
Đây không phải là một câu trả lời độc lập.
Nathaniel Ford

3

Đây là các bước giải pháp:

  1. sao lưu cơ sở dữ liệu của bạn (cấu trúc với tùy chọn thả và dữ liệu)
  2. dừng dịch vụ động cơ mysql
  3. xóa thư mục cơ sở dữ liệu theo cách thủ công từ bên trong mysql / data
  4. khởi động công cụ mysql
  5. tạo cơ sở dữ liệu mới với bất kỳ tên nào khác với cơ sở dữ liệu bị hỏng của bạn
  6. tạo một bảng với tên của bảng bị hỏng bên trong cơ sở dữ liệu mới (đây là bí mật). và tốt hơn là tạo bảng với cấu trúc chính xác như nhau.
  7. đổi tên cơ sở dữ liệu thành cơ sở dữ liệu bị hỏng cũ
  8. khôi phục lại bản sao lưu của bạn và bảng của bạn sẽ hoạt động tốt.

2

Có vấn đề này nhiều lần. Nếu bạn có DB lớn và muốn thử tránh sao lưu / khôi phục (có thêm bảng bị thiếu), hãy thử vài lần qua lại:

BẢNG DROP my_table;

THAY ĐỔI BẢNG TUYỆT VỜI my_table;

-và-

rm my_table.ibd (orphan w / o tương ứng my_table.frm) nằm trong thư mục / var / lib / mysql / my_db /

-và sau đó-

TẠO BẢNG NẾU KHÔNG EXISTS my_table(...)


2

Xóa / Di chuyển tablename.ibd chắc chắn không hoạt động với tôi.

Làm thế nào tôi giải quyết nó

Vì tôi sẽ xóa bảng bị hỏng và không tồn tại, tôi đã sao lưu các bảng khác bằng cách truy cập phpmyadmin-> cơ sở dữ liệu-> export-> các bảng đã chọn để sao lưu-> xuất (dưới dạng .sql).

Sau đó tôi chọn biểu tượng cơ sở dữ liệu bên cạnh tên cơ sở dữ liệu và sau đó bỏ nó. Tạo một cơ sở dữ liệu mới. Chọn cơ sở dữ liệu mới của bạn-> nhập-> Chọn tệp bạn đã tải xuống trước đó -> nhấp vào nhập. Bây giờ tôi có các bảng làm việc cũ của tôi và đã xóa bảng bị hỏng. Bây giờ tôi chỉ cần tạo bảng đã ném lỗi.

Có khả năng tôi đã có một bản sao lưu trước đó của bảng bị hỏng.


2

Lỗi này xảy ra khi bạn tạm dừng một số chức năng. Giống như chạy truy vấn dưới đây với khóa ngoại không chính xác.

set foreign_key_checks=0

2

Có chính xác cùng một vấn đề; Tôi đã thêm mysql@5.6(sau khi có 5.5).

Giá trị mặc định của bia là 5,6 innodb_file_per_table=1trong khi đó ở 5,5 innodb_file_per_table=0.

Tệp hiện có của bạn ibdata1(dữ liệu innodb kết hợp) vẫn sẽ có các tham chiếu đến các bảng bạn đang cố gắng tạo / thả. Thay đổi innodb_file_per_tabletrở về 0 hoặc xóa tệp dữ liệu ibdata1 ( điều này sẽ làm mất tất cả dữ liệu của bạn, vì vậy hãy đảm bảo bạn mysqldump trước hoặc đã có kết xuất .sql ).

Một mysql@5.6mặc định khác mà bit tôi là thiếu cổng, do đó, mạng được mặc định là ổ cắm unix và máy khách mysql tiếp tục báo cáo:

ERROR 2013 (HY000): Lost connection to MySQL server at 'sending authentication information', system error: 32

Tôi thêm <string>--port=3306</string>vào .plistmảng, nhưng bạn cũng có thể chỉ định port=3306trong bạnmy.cnf

Chạy brew services stop mysql@5.6thực hiện thay đổi của bạn sau đóbrew services start mysql@5.6


1

Cố gắng bỏ không gian bảng có thể cung cấp cho bạn các lỗi khác. Đối với tôi, tôi đã nhận được lỗi sau:

DROP TABLESPACE `tablename`

Error Code: 1478. Table storage engine 'InnoDB' does not support the create option 'TABLESPACE or LOGFILE GROUP' 

Giải pháp của tôi là bỏ cơ sở dữ liệu. Điều này sẽ loại bỏ bất kỳ không gian bảng nào liên quan đến nó và cho phép bạn tạo lại các bảng.


19
Thật không may, giống như nói rằng 'Tôi có một cái đinh vít và sử dụng búa trả lại lỗi này, vì vậy giải pháp của tôi là thả một tảng đá vào nó'. Giá trị thực sẽ là tìm ra cách sửa một bảng này mà không cần lấy toàn bộ cơ sở dữ liệu.
Jason

Đừng! Tôi đã hy vọng đây sẽ là một giải pháp thay thế cho câu hỏi của tôi (và tôi đã đăng nó dưới dạng câu trả lời), nhưng tôi đã đi được nửa bước trong quá trình đổi tên bảng / bỏ cơ sở dữ liệu. Tôi ghét InnoDB bây giờ.
NobleUplift

Nhưng tôi đã thu thập cơ sở dữ liệu, tạo lại nó và vẫn gặp vấn đề này!
TRiG

@TRiG bạn đã khởi động lại máy chủ chưa?
Aris

1
Tôi nghĩ rằng tôi sẽ hỏi một câu hỏi riêng, @Aris. Trong trường hợp của tôi, nó trên máy tính để bàn Ubuntu. Tôi đã khởi động lại không chỉ MySQL, mà toàn bộ máy, nhiều lần. Cũng xóa thư mục cơ sở dữ liệu bằng tay với một rm -r. Nó gây khó chịu, nhưng cũng không thể hiện.
TRiG

1

Nếu bạn có một máy chủ khác có phiên bản tốt của cùng một bảng, bạn có thể tạo một bản sao (table_copy), chuyển bảng_copy sang máy chủ có vấn đề. Sau đó xóa bảng vấn đề và đổi tên bảng_copy thành bảng.


1

Đối với tôi, nó chỉ giúp vào thư mục MYSQL DATA trong / var / lib / mysql / {db_name} (linux) và thả tệp {table_name} .ibd giống như tên thư mục.


0

Tôi chỉ xóa DB cũ của tôi nằm trong localhost của tôi trực tiếp từ wamp, Dừng tất cả các dịch vụ, Chuyển đến wamp / bin / mysql / mysql [phiên bản] / data và tôi tìm thấy DB có vấn đề, tôi xóa nó và bắt đầu lại tất cả các dịch vụ, tạo lại cơ sở dữ liệu của bạn và nó đã được thực hiện, Bây giờ bạn có thể nhập các bảng của mình,


0

Cách mà tôi tìm thấy để "giải quyết" vấn đề này khá khó chịu, nhưng có một kịch bản xử lý nó.

Về cơ bản, bạn cần ibdata1ib_logfile*các tập tin biến mất (chúng chứa ánh xạ của khóa ngoại, trong số những thứ khác). Cách an toàn duy nhất để làm điều này là xuất tất cả các cơ sở dữ liệu của bạn, dừng mysql, xóa các tệp, khởi động mysql và sau đó nhập các tệp.

Các kịch bản giúp giải quyết vấn đề này là https://github.com/uberhacker/shrink-ibdata1 , mặc dù mục đích nêu trong kịch bản này là khác nhau, nó không giải quyết vấn đề.


0

Cách duy nhất nó làm việc cho tôi là:

  1. Tạo một bảng tương tự
  2. Sao chép các tệp .frm và .idb của bảng tương tự mới vào tên của bảng bị hỏng.
  3. Sửa quyền
  4. Khởi động lại MariaDB
  5. Thả bàn hỏng

-1

nếu bạn gặp vấn đề này và bạn không có tùy chọn khác, hãy thay đổi công cụ thành bất kỳ công cụ nào khác như 'myisam', sau đó thử tạo bảng.

từ chối trách nhiệm: đó không phải là câu trả lời hợp lệ vì bạn có thể có các ràng buộc khóa ngoài sẽ không được hỗ trợ bởi một công cụ lưu trữ khác. Mỗi công cụ lưu trữ có chuyên môn riêng để lưu trữ và truy cập dữ liệu, những điểm này cũng được tính đến.


-1

Vui lòng KHÁM PHÁ không gian bảng trước khi nhập

Tôi có giải pháp vấn đề tương tự dưới đây

  1. Đầu tiên bạn phải bỏ tên cơ sở dữ liệu của bạn. nếu cơ sở dữ liệu của bạn không xóa bạn đã lưu tôi. Đối với hệ thống Windows, thư mục của bạn sẽ là C: / xampp / mysql / data / yourdabasefolder xóa "yourdabasefolder"

  2. Một lần nữa bạn phải tạo cơ sở dữ liệu mới và nhập tệp sql cũ của bạn. Nó sẽ làm việc

Cảm ơn


-1

Tôi phải xác định vị trí thư mục dữ liệu MySQL của mình:

HIỂN THỊ BIẾN ĐỔI Ở ĐÂU Biến_Name THÍCH "% dir"

Sau đó buộc loại bỏ cơ sở dữ liệu đó:

sudo rm -rf


-1

Bạn có thể chạy truy vấn sau với tư cách là người dùng root mysql

drop tablespace `tableName`

-1

Này các nhà phát triển đừng lãng phí thời gian của bạn. Chỉ cần xóa cơ sở dữ liệu chứa các bảng và nhập lại toàn bộ bảng. Tiết kiệm thời gian = thời gian là tiền bạc. Chúc mừng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.