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 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
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!