2009-11-23 68 views
5

我甩一个DB从生产:ERROR 1005(HY000):无法创建表 './intranet2/dept.frm'(错误:150)

的mysqldump -u用户名-p intranet2 > intranet2.sql

到开发服务器:

的mysql -u用户名-p intranet2 < intranet2.sql

,我得到这个:

ERROR 1005(HY000)在行244:无法创建表 './intranet2/dept.frm'(错误:150)

我试图把这个SQL文件的开头:

SET FOREIGN_KEY_CHECKS = 0;

但我仍然收到相同的信息。 mysqldump应该能够重新创建数据库,否则我可以相信我的备份?

+0

我删除了两个外键从部门表它的工作。但是,如果我使用'SET FOREIGN_KEY_CHECKS = 0;'为什么b ---- y MySql应用foregn约束?我的意见仍然是mysqldump是相当不可靠的。 – rtacconi 2009-11-23 17:05:23

+0

我把我的解决方案放在这里:http://riccardotacconi.blogspot.com/2009/11/error-1005-hy000-at-line-cant-create.html – rtacconi 2009-11-23 17:40:15

回答

3

检查引擎是否为InnoDB。

在这种情况下,你可以尝试把这些线在转储

/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 

而这些最终

/*!40101 SET [email protected]_SQL_MODE */; 
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */; 
/*!40014 SET [email protected]_UNIQUE_CHECKS */; 

好运气的开始

+1

我遇到了这个错误与mysqldump --all-database文件,我编辑了额外的一个单一的数据库从转储和我在数据库的开始砍掉元信息。当我从另一个单一的转储文件恢复它时,它很好。 – 2014-10-23 15:09:06

+1

我仍然面临着这个问题有这些问题的争议。偶数/ *!40101 SET @OLD_SQL_MODE = @@ SQL_MODE,SQL_MODE ='NO_AUTO_VALUE_ON_ZERO,TRADITIONAL,ALLOW_INVALID_DATES'* /;不起作用 – Faraz 2016-05-26 11:40:58

+1

您必须包含所有行,而不仅仅是最后一行,并将脚本作为单个事务运行。 – 2016-05-27 08:23:37

相关问题