2011-12-30 41 views
0

我遵循这里的建议,但在将我的数据库导入到本地XAMPP安装后,我仍遇到相同的问题。外键约束 - DB不会导入。 - Magento

我的SQL转储被包裹在这些标签:

SET FOREIGN_KEY_CHECKS=0; 
// FULL DB DUMP 
SET FOREIGN_KEY_CHECKS=1; 

即使如此,我收到此错误信息:

Error 
SQL query: 
ALTER TABLE `mage_catalog_eav_attribute` ADD CONSTRAINT `FK_CATALOG_EAV_ATTRIBUTE_ID` FOREIGN KEY (`attribute_id`) REFERENCES `mage_eav_attribute` (`attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE ; 

MySQL said: Documentation 
#1452 - Cannot add or update a child row: a foreign key constraint fails (`myDB_NAME`.<result 2 when explaining filename '#sql-2e0_5a'>, CONSTRAINT `FK_CATALOG_EAV_ATTRIBUTE_ID` FOREIGN KEY (`attribute_id`) REFERENCES `mage_eav_attribute` (`attribute_id`) ON DE) 

谁能帮助我明白,我需要禁用这些检查还有什么,还是防止这个错误?

我正在运行Magento 1.4.2,并通过xampp使用phpmyadmin导入。

回答

1

不要通过Phpmyadmin导入。它通常非常糟糕。使用命令行。

这应该工作:

cat your_mysql_dump_file.sql | mysql -uyour_user -p myDB_NAME 
+0

谢谢,这绕过了我遇到的问题。 – danchet 2012-01-08 18:12:04

3

当我花了MySQL的phpMyAdmin的出口,并把它变成另一个phpMyAdmin的界面,我发现预先存在的表导致的约束问题。由于关键限制,删除表格也是有问题的。

导入时,确保当前数据库表没有关键限制。我通过删除表格来做到这一点。

要删除这些表,我关闭了约束检查,通过在phpMyAdmin的SQL屏幕中执行SQL代码来处理相关数据库。

SET foreign_key_checks = 0; 
DROP TABLE civicrm_acl; 
... all of the problem tables with their constraints... 
DROP TABLE civicrm_worldregion; 
SET foreign_key_checks = 1; 

(后者SET是好管家)

然后,我可以做我的进口。当我查看我的MySQL导出时,在数据到位后,它在导入结束时添加了约束。如果您的MySQL导入在数据到位之前放入约束,那么这将阻止导入完全运行。

+0

感谢您的评论,下次我会尝试这种方法。 – danchet 2013-10-28 18:17:53