精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品开源,禁止转载和任何形式的非法内容使用,违者必究
最近发布一个测试软件平台给客户,用到数据库,把mysql下面data目录下文件压缩下发给客户,让客户停止mysql服务器再启动,访问此数据库时,有一个表可以,另外表访问时报:Table doesn't exist in engine。我根据提示删除了idb文件,再重启服务,还是不行。把数据库导出成sql语句,在有问题机器上又报表在tablespace里已经存在,不能创建。真是太无奈和麻烦了。最后建议客户删除mysql目录,彻底卸载mysql,再安装使用。
在中间使用时,用mysqlworkbench报mysql版本不匹配,怀疑是环境造成的问题。不过一般用压缩文件发布mysql,不是正规的办法,用脚本确实好一些。
第二天,想到用mysqlworkbench提供的DataImport功能来导入,尝试后报Please DISCARD the tablespace before IMPORT错误,先mysql服务停掉,删除目标数据库目录下文件,再启动服务,再导入,则成功,运行软件也不报mysql - Table doesn't exist in engine问题了。
文件拷贝发布数据库不行,用脚本;脚本直接执行不可以,用DataImport。用网上说的直接解决mysql - Table doesn't exist in engine是很麻烦的,要能另辟蹊径找思路来解决。
下面翻译些线索给大家,共同提高。
SELECT support FROM information_schema.engines WHERE engine='InnoDB'
在xampp update/reinstall后,InnoDB空间损坏了。
mysql对目录权限要求为0700 (-RWX------),对文件权限要求为:0660 (-RW-RW----)。操作示例:bash> find /Applications/XAMPP/xamppfiles/var/mysql -type d -exec chmod 0700 {} \;
bash> find /Applications/XAMPP/xamppfiles/var/mysql -type f -exec chmod 0660 {} \;
重置所有者和组,bash> chown -R mysql mysql /Applications/XAMPP/xamppfiles/var/mysql
用下面命令检查mysql系统表:select table_name from information_schema.tables where table_name='mytable';或改表引擎:alter table mytable engine=innodb;
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院内(文化路97号院)