Rumah > pangkalan data > tutorial mysql > Mengapa MySQL Melaporkan Jadual sebagai Tidak Wujud Selepas Perubahan Datadir, Walaupun SHOW TABLES Menyenaraikannya?

Mengapa MySQL Melaporkan Jadual sebagai Tidak Wujud Selepas Perubahan Datadir, Walaupun SHOW TABLES Menyenaraikannya?

Linda Hamilton
Lepaskan: 2024-12-06 10:36:12
asal
1023 orang telah melayarinya

Why Does MySQL Report a Table as Non-Existent After Datadir Change, Even Though SHOW TABLES Lists It?

Jadual MySQL tidak wujud? Tetapi apabila saya menukar datadir MySQL yang (sepatutnya) wujud, semua pangkalan data kecuali satu telah berjaya dipindahkan. Saya boleh menyambung dan menggunakan pangkalan data, arahan SHOW TABLES mengembalikan semua jadual dengan betul, dan fail untuk setiap jadual terdapat dalam direktori data MySQL.

Tetapi apabila saya cuba memilih sesuatu daripada jadual, saya mendapat mesej ralat bahawa jadual itu tidak wujud. Ini tidak masuk akal kerana saya dapat memaparkan jadual yang sama menggunakan pernyataan SHOW TABLES.

Saya rasa SHOW TABLES menyenaraikan kewujudan fail, tetapi tidak menyemak sama ada fail itu rosak. Oleh itu, walaupun anda boleh menyenaraikan fail tersebut, anda tidak boleh mengaksesnya.

Namun, ia hanyalah tekaan. Saya tidak pernah melihat kes seperti ini sebelum ini. Pada masa ini saya tidak dapat memulakan semula pangkalan data dan mengujinya, tetapi semua aplikasi lain yang menggunakan pangkalan data berfungsi dengan baik.

Ada sesiapa tahu punca fenomena ini?

Contoh:

Penyelesaian:
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
Salin selepas log masuk

Salin direktori pangkalan data terus menggunakan arahan di bawah Masalah yang sama mungkin berlaku jika anda melakukannya.

Apabila saya melakukan ini pada pangkalan data yang menggunakan jadual InnoDB, saya mendapat ralat pelik "jadual tidak wujud" yang disebutkan di atas.

cp -r /path/to/my/database /var/lib/mysql/new_database
Salin selepas log masuk
Masalahnya ialah saya memerlukan fail ib* (cth. ibdata1, ib_logfile0, ib_logfile1) pada akar MySQL datadir.

Saya menyalin fail ini dan ia berfungsi dengan baik.

Atas ialah kandungan terperinci Mengapa MySQL Melaporkan Jadual sebagai Tidak Wujud Selepas Perubahan Datadir, Walaupun SHOW TABLES Menyenaraikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan