MySQL> Bảng không tồn tại. Nhưng nó có (hoặc nó nên)


261

Tôi đã thay đổi datadir của một cài đặt MySQL và tất cả các cơ sở di chuyển chính xác ngoại trừ một cơ sở. Tôi có thể kết nối và USEcơ sở dữ liệu. SHOW TABLEScũng trả lại cho tôi tất cả các bảng một cách chính xác và các tệp của mỗi bảng tồn tại trên thư mục dữ liệu MySQL.

Tuy nhiên, khi tôi thử SELECTmột cái gì đó từ bảng, tôi nhận được thông báo lỗi rằng bảng không tồn tại. Tuy nhiên, điều này không có ý nghĩa vì tôi có thể hiển thị cùng một bảng thông qua SHOW TABLEStuyên bố.

Tôi đoán là SHOW TABLESliệt kê sự tồn tại của tệp nhưng không kiểm tra xem tệp có bị hỏng hay không. Do đó, tôi có thể liệt kê các tệp đó nhưng không truy cập được.

Tuy nhiên, nó chỉ là một dự đoán. Tôi chưa bao giờ nhìn thấy điều này trước đây. Bây giờ, tôi không thể khởi động lại cơ sở dữ liệu để thử nghiệm, nhưng mọi ứng dụng khác sử dụng nó đều chạy tốt. Nhưng đó chỉ là dự đoán, tôi chưa bao giờ thấy điều này trước đây.

Có ai biết tại sao điều này xảy ra?

Thí dụ:

mysql> SHOW TABLES;
+-----------------------+
| Tables_in_database    |
+-----------------------+
| TABLE_ONE             |
| TABLE_TWO             |
| TABLE_THREE           |
+-----------------------+
mysql> SELECT * FROM TABLE_ONE;
ERROR 1146 (42S02): Table 'database.TABLE_ONE' doesn't exist

Bạn đã khôi phục cơ sở dữ liệu từ bản sao lưu? hoặc bạn vừa sao chép các tệp db? Bạn có quyền truy cập root vào máy chủ mysql không?
alinoz

chỉ cần sao chép các tập tin! vâng tôi có quyền truy cập root vào mọi thứ
johnsmith

bạn có thể thử không: mysql_fix_privilege_tables
alinoz

4
là những bảng innodb?
Paul Dixon

1
Có, tất cả các bảng là InnoDB. Xấu của tôi vì đã không nói điều đó!
johnsmith

Câu trả lời:


263

Chỉ trong trường hợp bất cứ ai vẫn quan tâm:

Tôi gặp vấn đề tương tự sau khi sao chép một thư mục cơ sở dữ liệu trực tiếp bằng lệnh

cp -r /path/to/my/database /var/lib/mysql/new_database

Nếu bạn làm điều này với cơ sở dữ liệu sử dụng InnoDBcác bảng, bạn sẽ nhận được lỗi 'bảng không tồn tại' điên rồ này được đề cập ở trên.

Vấn đề là bạn cần các ib*tệp trong thư mục gốc của datadir MySQL (ví dụ ibdata1, ib_logfile0ib_logfile1).

Khi tôi sao chép chúng, nó làm việc cho tôi.


27
Cứu cuộc đời tôi! Đối với bất kỳ ai khác, chỉ cần đảm bảo không ghi đè lên các tệp ib * hiện có nếu bạn đang cố sao chép sang bản cài đặt mới. Sao lưu thư mục mysql / hiện có của bạn, thay thế bằng thư mục cũ mà bạn muốn khôi phục, mysqldump mọi thứ, sau đó khôi phục mysql /. Sau đó, bạn có thể nhập mysqldumps đúng cách.
Matthew

1
Trên Mac để sao chép cơ sở dữ liệu của tôi cục bộ, ngoài việc sao chép tệp ibdata (nằm bên cạnh thư mục cơ sở dữ liệu), tôi phải truy cập chown _mysql:wheeltên tệp cơ sở dữ liệu, ibdata và tất cả các tệp trong thư mục (sử dụng chown -R ...). Tương tự, các quyền không chính xác trong thư mục vì vậy chmod -R 660 databasenamecần có các bảng để hiển thị trong cơ sở dữ liệu.
Dylan Valade

4
Cảm ơn Mike. Chỉ cần làm rõ, bạn sẽ cần phải khởi động lại dịch vụ mysql để hoạt động này. Ít nhất tôi đã làm, và cảm ơn lòng tốt nó đã làm việc. Rất nhiều dữ liệu được lưu ở đó!
Nick Martin

15
LƯU Ý: Đừng quên sử dụng chown!!! Vì vậy, tất cả sau khi cpsử dụng lệnh này ->chown mysql:mysql /var/lib/mysql/ -R
K-Gun

1
CHÚ THÍCH 2: Đừng quên áp dụng sự cho phép thích hợp. Trong trường hợp của tôi sudo chmod -R 600 /var/lib/mysql
augusto

45

Đối với tôi trên Mac OS (Cài đặt MySQL DMG), việc khởi động lại đơn giản máy chủ MySQL đã giải quyết được vấn đề. Tôi đoán là ngủ đông gây ra nó.


Cảm ơn đã sửa vấn đề tương tự cho tôi là tốt. Của tôi xảy ra sau khi máy của tôi tắt do mất điện đột ngột. Sau lần khởi động lại máy đầu tiên / khởi động MySQL, tôi đã gặp lỗi. Sau đó, tôi đọc câu trả lời này. Tôi đã dừng / khởi động MySQL thông qua System Preferences và nó đã được sửa.
Jeff Evans

2
sudo /usr/local/mysql/support-files/mysql.server restart
laffuste

Tương tự như vậy. Tôi gặp phải vấn đề này sau khi nâng cấp lên macOS Sierra 10.12.6. Không chắc chắn có một liên kết nhân quả, nhưng thời gian có vẻ đáng ngờ.
Dave Mulligan

Cảm ơn, đã làm việc ở một mức độ nào đó; Tôi đã khởi động lại dịch vụ mysql (5.6, windows) sau đó chạy check table TABLE_ONE;Tôi gặp một số lỗi "lỗi phân vùng p2 bị trả về", "idx_blah_1 bị đánh dấu là bị hỏng" và "idx_blah_2 bị đánh dấu là bị hỏng". Bây giờ tôi quay lại chạy optimize table TABLE_ONE;và gặp lỗi "Bảng 'cơ sở dữ liệu.TABLE_ONE' không tồn tại".
Omar

Chạy MySLQ trên Mojave. Khởi động lại thông qua bảng tùy chọn hệ thống không hoạt động. Tôi đã phải khởi động lại thông qua dòng lệnh.
Cortex

30

Tôi gặp vấn đề này khi trường hợp tên bảng tôi đang sử dụng bị tắt. Vì vậy, bảng được gọi là 'db' nhưng tôi đã sử dụng 'DB' trong câu lệnh select. Hãy chắc chắn rằng trường hợp là như nhau.


13
+1 Tên trường không phân biệt chữ hoa chữ thường, nhưng tên bảng là. Lỗi thường gặp, và rất khó chịu.
GolezTrol

27

Lỗi này cũng có thể xảy ra khi cài đặt lower_case_table_namesthành 1, và sau đó cố gắng truy cập các bảng được tạo với giá trị mặc định cho biến đó. Trong trường hợp đó, bạn có thể hoàn nguyên nó về giá trị trước đó và bạn sẽ có thể đọc bảng.


4
Cái này cắn tôi Tôi đã hoàn nguyên giá trị, khởi động lại cơ sở dữ liệu, xuất các bảng, đặt giá trị trở lại 1, khởi động lại cơ sở dữ liệu, nhập lại các bảng và mọi thứ hoạt động trở lại.
wmarbut

17
  1. dừng mysqld
  2. sao lưu thư mục mysql: cp -a /var/lib/mysql /var/lib/mysql-backup
  3. sao chép thư mục cơ sở dữ liệu từ máy cũ sang /var/lib/mysql
  4. ghi đè ib * (ib_logfile *, ibdata) từ cơ sở dữ liệu cũ
  5. bắt đầu mysqld
  6. đổ cơ sở dữ liệu
  7. mysqldump >dbase.mysql
  8. dừng dịch vụ mysql
  9. tẩy /var/lib/mysql
  10. đổi tên /var/lib/mysql-backupthành/var/lib/mysql
  11. bắt đầu mysqld
  12. tạo cơ sở dữ liệu
  13. mysqldump < dbase.mysql

Trong trường hợp của tôi, tôi cũng phải thực hiện: 10.5 xóa thư mục <db_name> khỏi dưới / var / lib / mysql /
Tony the Tech

nó không hoạt động. :( bảng 'tablename.wp_posts' không tồn tại
Jahirul Hồi giáo Mamun

14

Vui lòng chạy truy vấn:

SELECT 
    i.TABLE_NAME AS table_name, 
    LENGTH(i.TABLE_NAME) AS table_name_length,
    IF(i.TABLE_NAME RLIKE '^[A-Za-z0-9_]+$','YES','NO') AS table_name_is_ascii
FROM
    information_schema.`TABLES` i
WHERE
    i.TABLE_SCHEMA = 'database'

Thật không may, MySQL cho phép các ký tự unicode và không in được sử dụng trong tên bảng. Nếu bạn đã tạo các bảng của mình bằng cách sao chép mã tạo từ một số tài liệu / trang web, có khả năng nó có không gian có chiều rộng bằng không ở đâu đó.


bài viết rất hữu ích, cảm ơn! nhưng tất cả các bảng là ASCII với độ dài tên chính xác
johnsmith

12

Tôi vừa trải qua ba ngày cho cơn ác mộng này. Tốt nhất, bạn nên có một bản sao lưu mà bạn có thể khôi phục, sau đó chỉ cần thả bảng bị hỏng. Những loại lỗi này có thể khiến ibdata1 của bạn phát triển rất lớn (kích thước 100 GB + cho các bảng khiêm tốn)

Nếu bạn không có một bản sao lưu gần đây, chẳng hạn như nếu bạn đã dựa vào mySqlDump, thì các bản sao lưu của bạn có thể đã âm thầm phá vỡ tại một số điểm trong quá khứ. Bạn sẽ cần xuất cơ sở dữ liệu, tất nhiên bạn không thể làm được, vì bạn sẽ gặp lỗi khóa trong khi chạy mySqlDump.

Vì vậy, như một cách giải quyết, đi đến /var/log/mysql/database_name/ và xóa tên_bảng. *

Sau đó ngay lập tức cố gắng đổ bàn; làm điều này bây giờ sẽ làm việc. Bây giờ khôi phục cơ sở dữ liệu vào cơ sở dữ liệu mới và xây dựng lại (các) bảng bị thiếu. Sau đó đổ cơ sở dữ liệu bị hỏng.

Trong trường hợp của chúng tôi, chúng tôi cũng liên tục nhận được mysql has gone awaytin nhắn theo các khoảng thời gian ngẫu nhiên trên tất cả các cơ sở dữ liệu; một khi cơ sở dữ liệu bị hỏng đã được gỡ bỏ, mọi thứ trở lại bình thường.


Cảm ơn Andy, tôi đã có manh mối cho vấn đề mà tôi đang gặp phải. Tôi đã chuyển ibdata1 từ một số người trong ổ C sang ổ D để tiết kiệm không gian giòn trên ổ C. Rất may, tôi đã nhận được ibdata1 (cùng với tệp ib_logfile1. Và ib_logfile0) trong ổ D của tôi sau khi đọc nhận xét của bạn. Bây giờ sẽ nhìn từ nơi tôi di chuyển các tập tin này và khôi phục nó ở đó. Sau đó, hy vọng bàn của tôi sẽ trở lại.
AKS

Làm thế nào để bạn "ngay lập tức cố gắng để đổ bàn"? Tôi có cùng một vấn đề, không có bản sao lưu vì vậy tôi đang tìm cách để có được cấu trúc bảng ít nhất nhưng nếu bạn loại bỏ các tệp khỏi thư mục thì mọi thứ chỉ đơn giản là biến mất?
mmvsbg

Điều này đã làm nó! Cảm ơn,
jstuardo

11

Tôi không biết lý do nhưng trong trường hợp của tôi, tôi đã giải quyết việc vô hiệu hóa và cho phép kiểm tra khóa ngoại

SET FOREIGN_KEY_CHECKS=0;
SET FOREIGN_KEY_CHECKS=1;

4
Cảm ơn anh! Trong trường hợp của tôi, tôi đã phải vô hiệu hóa Foreign_key_checks và thực hiện một truy vấn chọn trên bảng biến mất sau đó bảng trở lại bình thường. Tôi nghĩ rằng có một số vi phạm khóa ngoại trong các hàng dữ liệu vì tôi đã có một chương trình bị gián đoạn trước khi sự cố này xảy ra.
Egist Li

Không thể tìm ra lý do chính xác tại sao, nhưng điều này cũng giải quyết được vấn đề của tôi
Miroslav Glamuzina

11

Tôi đã có cùng một vấn đề và tôi đã tìm kiếm trong 2-3 ngày, nhưng giải pháp cho tôi thực sự ngu ngốc.

Khởi động lại mysql

$ sudo service mysql restart

Bây giờ các bảng trở nên có thể truy cập.


1
Hoàn toàn làm việc cho tôi, mặc dù lệnh của tôi là hơi khác nhau: $ sudo /usr/local/mysql/support-files/mysql.server restart
KirstieBallance

Điều này nên ở đầu danh sách những điều cần thử tôi đoán. Đáng giá một shot và trong trường hợp của tôi nó đã làm việc.
Coroos

7

Ok điều này sẽ nghe khá vô lý, nhưng hài hước cho tôi.
Đối với tôi, vấn đề đã được giải quyết khi tôi thay đổi tuyên bố của mình sang vấn đề này:

SELECT * FROM `table`

Tôi đã thực hiện hai thay đổi
1.) Tạo tên bảng chữ thường - Tôi biết !!
2.) Đã sử dụng ký hiệu trích dẫn cụ thể = ` : Đó là khóa phía trên TAB của bạn

Giải pháp nghe có vẻ vô lý, nhưng nó đã hoạt động và đó là tối thứ bảy và tôi đã làm việc từ 9 giờ sáng - Vì vậy tôi sẽ dùng nó :)

Chúc may mắn.


1
Chỉ cần FYI - Bảng là MyISAMand chứ không phải INNO
PlanetUn Unknown

1
Ngoài ra, `được gọi là backtick
Gary

7

Tôi gặp vấn đề này sau khi nâng cấp WAMP nhưng không có bản sao lưu cơ sở dữ liệu.

Điều này làm việc cho tôi:

  1. Dừng WAMP mới

  2. Sao chép thư mục cơ sở dữ liệu bạn cần và tệp ibdata1 từ cài đặt WAMP cũ

  3. Xóa ib_logfile0ib_logfile1

  4. Bắt đầu WAMP

Bây giờ bạn có thể tạo bản sao lưu cơ sở dữ liệu của bạn. Tuy nhiên sau khi máy chủ của bạn khởi động lại một lần nữa, bạn vẫn sẽ gặp vấn đề. Vì vậy, bây giờ cài đặt lại WAMP và nhập cơ sở dữ liệu của bạn.


Tôi ước mọi người sẽ chỉ ra nơi các tập tin mà họ tham chiếu cư trú ...
MagentoAaron

Đến đây từ hình ảnh docker mysql không có bảng có thể đọc được. Có thể xác nhận rằng việc dừng hình ảnh, xóa các tệp này và khởi động lại đã cấp lại quyền truy cập.
Anthony Harley

7

Cố gắng chạy truy vấn sql để loại bỏ không gian bảng trước khi sao chép tệp idb:

ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;

Sao chép tập tin idb

ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;

Khởi động lại MySql


Bạn đã cứu tôi :)
l00k

@ I0pan Tôi đã thử các bước tương tự như đã đề cập. Nhưng sau ALTER TABLE mydatabase.mytable NHẬP KHẨU TABLESPACE; nó đang hiển thị bảng không tồn tại. Nhưng nó có :(
Syed Asad Abbas Zaidi

5

Sau khi phải cài đặt lại MySQL Tôi gặp vấn đề tương tự, có vẻ như trong quá trình cài đặt, một số tệp cấu hình lưu trữ dữ liệu về tệp nhật ký InnoDB, các tệp này ib_logfile * (chúng là tệp nhật ký phải không?), Bị ghi đè. Để giải quyết vấn đề này, tôi chỉ xóa các tệp ib_logfile *.


5

Điều làm việc cho tôi, chỉ là làm rơi cái bàn, mặc dù nó không tồn tại. Sau đó, tôi đã tạo lại bảng và được sao lưu từ một bãi chứa sql được thực hiện trước đó.

Phải có một số cơ sở dữ liệu về tên bảng và rất có thể nó vẫn tồn tại ở đó cho đến khi tôi bỏ nó.


Tôi đã tạo ra một thủ tục, nhận ra rằng nó cần phải là một khung nhìn. Vì vậy, tôi đã đổi tên thủ tục với một số zzz ở cuối để tôi có thể có nó để tham khảo và tạo ra một khung nhìn cùng tên. Không thể có được một CHỌN để xem nó, đã gặp lỗi này. <br> Đã sao chép mã vào một tệp văn bản, xóa cả chế độ xem và quy trình. Tái tạo quan điểm và tất cả đều tốt. <br> Vì vậy, vâng - bảy năm sau - vẫn còn một số hành động tên ma / bộ nhớ cache đang diễn ra trong một số trường hợp cạnh.
Roger Krueger

5

Có một vấn đề tương tự với một bảng ma. Rất may đã có một kết xuất SQL từ trước khi thất bại.

Trong trường hợp của tôi, tôi đã phải:

  1. Dừng myQuery
  2. Di chuyển các tập tin ib * từ /var/mysqlmột bản sao lưu
  3. Xóa bỏ /var/mysql/{dbname}
  4. Khởi động lại myQuery
  5. Tái tạo cơ sở dữ liệu trống
  6. Khôi phục tệp kết xuất

LƯU Ý: Yêu cầu tệp kết xuất.


Tôi đoán ý bạn là /var/lib/mysqlthay vì/var/mysql
knocte

Xóa các thư mục cơ sở dữ liệu và khôi phục khỏi bản sao lưu là điều duy nhất giúp tôi.
Jano

3
  1. Do mysqldump vào cơ sở dữ liệu:

    mysqldump -u user -ppass dbname > D:\Back-ups\dbname.sql
  2. Khôi phục cơ sở dữ liệu

    mysql -u user -ppass dbname < D:\Back-ups\dbname.sql

Bây giờ tất cả các bảng trong cơ sở dữ liệu đã được khôi phục hoàn toàn. Thử..

SELECT * FROM dbname.tablename;

2

Tôi đã cài đặt trên máy tính của MariaDB mới, ngừng dịch vụ đổi tên thư mục Mysql dữ liệu vào đĩa dữ liệu tôi giải quyết vấn đề của tôi sao chép chỉ Mysql \ data \ table_foldersibdata1 từ đâm HD MySql dữ liệu thư mục vào thư mục dữ liệu mysql cài đặt mới.

Tôi đã bỏ qua ib_logfile0ib_logfile1 (nếu không thì máy chủ không khởi động dịch vụ)

Bắt đầu dịch vụ mysql.

Sau đó, máy chủ đang chạy.


2

Có vẻ như vấn đề phải làm (ít nhất là ở tôi và một vài người khác) với các tệp nhật ký innodb không hợp lệ (bị hỏng?). Nói chung, họ chỉ cần được tạo lại.

Dưới đây là các giải pháp, hầu hết trong số đó yêu cầu khởi động lại mysql.

  • Tạo lại các tệp nhật ký của bạn ( Xóa và khởi động lại mysql )
  • Thay đổi kích thước tệp nhật ký của bạn (MySql 5.6+ sẽ tạo lại tệp cho bạn)
  • Nếu bạn đang thực hiện một số loại di chuyển dữ liệu, hãy đảm bảo rằng bạn đã di chuyển đúng tệp và cấp cho nó quyền như những người khác đã nêu
  • Kiểm tra quyền của dữ liệu và tệp nhật ký của bạn, rằng mysql là chủ sở hữu của cả hai
  • Nếu vẫn thất bại, bạn có thể sẽ phải tạo lại cơ sở dữ liệu

2

Đây là một kịch bản khác (nâng cấp phiên bản) :

Tôi đã cài đặt lại hệ điều hành của mình (Mac OS El Captain) và cài đặt phiên bản mới của mysql (sử dụng homebrew). Phiên bản đã cài đặt (5.7) tình cờ mới hơn phiên bản trước của tôi. Sau đó, tôi đã sao chép qua các bảng, bao gồm các tệp ib * và khởi động lại máy chủ. Tôi có thể thấy các bảng trong bàn làm việc mysql nhưng khi tôi cố gắng chọn bất cứ thứ gì, tôi nhận được "Bảng không tồn tại".

Giải pháp:

  1. dừng máy chủ mysql, vd mysql.server stop hoặcbrew services stop mysql
  2. khởi động máy chủ bằng mysqld_safe --user=mysql --datadir=/usr/local/var/mysql/ (thay đổi đường dẫn khi cần thiết)
  3. chạy mysql_upgrade -u root -p password (trong một cửa sổ đầu cuối khác)
  4. tắt máy chủ đang chạy mysqladmin -u root -p password shutdown
  5. khởi động lại máy chủ ở chế độ bình thường mysql.server starthoặcbrew services start mysql

Các tài liệu có liên quan đang ở đây .


Đã thử rất nhiều nhưng đây là điều duy nhất giúp tôi rất nhiều sau khi tôi chuyển đến một máy chủ mới với tất cả các cơ sở dữ liệu của mình. Cảm ơn! (Ubuntu 16.04)
Falk

2

Trong trường hợp của tôi, tôi đã xác định một kích hoạt trên bảng và sau đó đang cố gắng chèn hàng trong bảng. có vẻ như, bằng cách nào đó kích hoạt là sai, và do đó chèn đã gây ra lỗi, bảng không tồn tại.


1
Điều này làm việc cho tôi! Kiểm tra từng kích hoạt và tìm thấy một kích hoạt cần phải được cải thiện và nó đã hoạt động!
Paresh

1

Có thể bạn có một ký tự ẩn trong tên bảng của bạn. Những người không xuất hiện khi bạn làm một bảng hiển thị. Bạn có thể thực hiện "SHOW CREATE TABLE TABLE_ONE" và tab hoàn thành "TABLE_ONE" và xem liệu nó có đặt bất kỳ ký tự ẩn nào không. Ngoài ra, bạn đã thử thả và làm lại các bảng. Chỉ để đảm bảo không có gì sai với các đặc quyền và không có nhân vật ẩn.


tab hoàn thành không giúp ích và tôi không thể hiển thị tạo bảng vì bảng "không tồn tại". từ địa ngục
johnsmith

1

Vấn đề chính xác tương tự sau khi nhập sao lưu TimeMachine. Giải pháp của tôi là dừng máy chủ MySQL và sửa các quyền đọc-ghi trên các tệp ib *.


1

Một câu trả lời khác tôi nghĩ là đáng để đưa lên đây (vì tôi đến đây với cùng một vấn đề và điều này hóa ra là câu trả lời cho tôi):

Kiểm tra kỹ xem tên bảng trong truy vấn của bạn có được đánh vần chính xác giống như trong cơ sở dữ liệu không.

Một điều hiển nhiên, người mới, nhưng những thứ như "người dùng" so với "người dùng" có thể khiến mọi người gặp khó khăn và tôi nghĩ đó sẽ là một câu trả lời hữu ích trong danh sách ở đây. :)


1

Trong trường hợp của tôi, khi tôi đang nhập tệp sql đã xuất, tôi gặp lỗi như bảng không tồn tại cho truy vấn tạo bảng.

Tôi nhận ra rằng có một dấu gạch dưới trong tên cơ sở dữ liệu của tôi và mysql đã đặt một ký tự thoát ngay trước đó.

Vì vậy, tôi đã loại bỏ dấu gạch dưới trong tên cơ sở dữ liệu, mọi thứ đều ổn.

Hy vọng nó sẽ giúp người khác quá.


1

Bảng của tôi bằng cách nào đó đã được đổi tên thành ' Customers' tức là với một không gian hàng đầu

Điều này có nghĩa là

a) truy vấn bị phá vỡ

b) bảng không xuất hiện ở nơi mong đợi theo thứ tự bảng chữ cái của các bảng của tôi, điều đó trong sự hoảng loạn của tôi có nghĩa là tôi không thể nhìn thấy nó!

RENAME TABLE ` Customer` TO `Customer`;

1

Trong trường hợp của tôi đó là SQLCA.DBParmtham số.

Tôi đã sử dụng

SQLCA.DBParm = "Databse = "sle_database.text""

nhưng nó phải

SQLCA.DBParm = "Database='" +sle_database.text+ "'"

Giải thích:

Bạn sẽ kết hợp ba chuỗi:

 1. Database='              -  "Database='"

 2. (name of the database)  - +sle_database.text+

 3. '                       - "'" (means " ' "  without space)

Đừng sử dụng khoảng trắng trong quatermark. Cảm ơn đồng nghiệp của tôi Jan.


1

Truy cập: xampp\mysql\data\dbname
bên trong dbname có tệp tablename.frm và tablename.ibd.
loại bỏ nó và khởi động lại mysql và thử lại.


1

Chỉ sao chép ibdata1tập tin từ thư mục dữ liệu cũ của bạn. Không sao chép ib_logfile1hoặc ib_logfile0tập tin. Điều đó sẽ khiến MySQL không thể bắt đầu nữa.


1

Đã đến cùng một vấn đề ngày hôm nay. Đây là vấn đề "Độ nhạy trường hợp nhận dạng" của mysql.

Vui lòng kiểm tra tệp dữ liệu tương ứng. Rất có khả năng tên tệp ở dạng chữ thường trên hệ thống tệp nhưng tên bảng được liệt kê trong lệnh "hiển thị bảng" là chữ hoa. Nếu biến hệ thống " lower_case_table_names" là 0, truy vấn sẽ trả về "bảng không tồn tại" vì so sánh tên có phân biệt chữ hoa chữ thường khi " lower_case_table_names" bằng 0.


1

Tôi đã có vấn đề tương tự trong các cửa sổ. Ngoài việc sao chép các tệp ib * và thư mục mysql trong thư mục dữ liệu thd, tôi cũng phải khớp tệp my.ini.

Tệp my.ini từ cài đặt trước của tôi không có dòng sau:

innodb-page-size=65536

Nhưng cài đặt mới của tôi đã làm. Có thể bởi vì tôi không có tùy chọn đó trong trình cài đặt cũ hơn. Tôi đã loại bỏ điều này và khởi động lại dịch vụ và các bảng hoạt động như mong đợi. Nói tóm lại, hãy đảm bảo rằng tệp my.ini mới là bản sao của tệp cũ, ngoại trừ duy nhất là datadir, plugin-dir và cổng #, tùy thuộc vào cài đặt mới của bạn.

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.