作者:空城 | 来源:互联网 | 2023-08-30 00:14
遇到问题:连接数据库查看payment表数据时报错表已经被损坏了,然后我就打算删除表后再重新创建,结果提示该表是存在的,如下:
但查看该数据库表时确实没有这个表。
解决思路:innodb引擎建payment表时在Data中的joymart数据库目录下中会生成两个文件:
payment.frm(保存了每个表的元数据,包括表结构的定义等,该文件与数据库引擎无关)
payment.ibd(InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索引的文件)。
我查看目录的时候却发现只有payment.ibd而parment.frm丢失了,说明只是InnoDB 内部数据字典中存在该表,导致payment成为孤表了。
解决办法一:如果payment无数据,或者数据不需要,则可直接删除payment.ibd文件,然后再重新建表,创建成功。
解决办法二:数据需要的情况下,则是在其他库中创建相同结构的payment表,然后把payment.frm文件复制到joymart数据库文件夹下。