我有一个myism表'test',它包含一些过时的数据,现在我想重新创建表,所有列都相同,只不过我将存储从myism更改为innodb.我用来重新创建表的转储sql如下:
drop table test;
create table test ( ... )
engine=innodb
insert into test(...) values(...)
Run Code Online (Sandbox Code Playgroud)
这就是我收到错误"从存储引擎得到错误-1"的地方,我用Google搜索,大部分结果都集中在损坏的innodb表上.虽然对于我的情况,我认为它没有被破坏,但这只是我在丢弃时遗漏并创建语句的东西.
另一件事是,在执行了上面的sql之后,剩下的用于表测试的是一个名为file.frm的文件,我想innodb表需要运行一些其他东西,但不确定是什么.
我该如何解决这个问题?我可能需要做更多这类任务,什么是放弃神话表并将其重新创建为innodb的正确程序?
谢谢.
Sha*_*awn 57
好.我找到了解决方案.该问题是由my.cnf中的innodb_force_recovery参数引起的,该参数设置为4.
要解决此问题,请设置为0或从my.cnf中完全删除此参数
如果你检查错误日志,在查询期间,mysql将用人类可读的语言写:在启用innodb恢复模式之前,它不会让你更改表中的任何内容,完全是下一条消息:
Run Code Online (Sandbox Code Playgroud)InnoDB: A new raw disk partition was initialized or InnoDB: innodb_force_recovery is on: we do not allow InnoDB: database modifications by the user. Shut down InnoDB: mysqld and edit my.cnf so that newraw is replaced InnoDB: with raw, and innodb_force_... is removed.
请参阅: http ://bugs.mysql.com/bug.php?id = 30225
小智 9
-1错误的常见原因是完整磁盘.我有不同的小型虚拟机用于测试目的,并且innodb不断填充它们(我一直忘记它).
$df -ah
Run Code Online (Sandbox Code Playgroud)
如果它显示磁盘为100%,那就是-1右边的原点;)
| 归档时间: |
|
| 查看次数: |
39984 次 |
| 最近记录: |