Mysql
 sql >> Base de données >  >> RDS >> Mysql

La table MySQL n'existe pas d'erreur, mais elle existe

Cela vient de m'arriver et au bout d'un moment, j'ai trouvé la réponse sur un article de blog et je voulais également la mettre ici.

Si vous copiez le répertoire de données MySQL depuis /var/lib/mysql vers /path/to/new/dir , mais copiez uniquement les dossiers de la base de données (c'est-à-dire mysql , wpdb , ecommerce , etc) ET vous avez des tables innodb, vos tables innodb apparaîtront dans 'show tables' mais les requêtes sur elles (select et describe ) échouera, avec l'erreur Mysql error: table db.tableName doesn't exist . Vous verrez le .frm fichier dans le répertoire db et demandez-vous pourquoi.

Pour les tables innodb, il est important de copier le ib* fichiers, qui dans mon cas étaient ibdata1 , ib_logfile0 , et ib_logfile1 . Une fois que j'ai effectué le transfert en veillant à les copier, tout a fonctionné comme prévu.

Si votre fichier my.cnf contient "innodb_file_per_table", le fichier .ibd sera présent dans le répertoire db mais vous aurez toujours besoin des fichiers ib*.