我有数据库的二进制文件 .fo 和 .ibd 并且我想将它们导入到 mysql。 我做了什么 ?
- 备份 mysql 文件夹: cp -a /var/lib/mysql /var/lib/mysql-backup
- 将数据库文件夹从旧机器复制到 /var/lib/mysql
- 从旧数据库覆盖 ib* (ib_logfile* , ibdata )
- 启动 mysql
我拥有的 ?
- 文件已导入,但是当我尝试在数据库中输入任何表时,我得到的表不存在,尽管我可以在 phpmyadmin 上看到表,但我无法访问它,请帮忙!! 表不存在
答案1
检查 ib* 的权限。
如果您手动编辑使用 InnoDB 表的数据库的目录,则需要确保 MySQL datadir 根目录中的 ib* 文件具有正确的权限。
- 所有者和群组需要
mysql
。 - ib* 文件的权限需要为 644。
如果这不起作用:mysqldump -u {user} {database} > db.sql
对数据库执行操作并从命令行重新加载数据库(mysql -u {user} < db.sql
)。
如果有外键违规,这两个命令将修复这些问题(并修复表):
SET FOREIGN_KEY_CHECKS=0;
SET FOREIGN_KEY_CHECKS=1;