Magento“一般错误:1005无法创建表”

时间:2013-02-03 16:06:39

标签: mysql magento foreign-keys magento-1.7 mysql-error-1005

我吓坏了......在Magento网站上工作,一切都很顺利。今天早上醒来继续工作,整个网站(前端和管理员)都在抛出错误。错误日志显示:

a:5:{i:0;s:249:"Error in file: "/home1/ameridq4/public_html/pursuityourself/magento/app/code/core/Mage/Admin/sql/admin_setup/    install-1.6.0.0.php" - SQLSTATE[HY000]: General error: 1005 Can't create table 'ameridq4_ecommerce-pursuit-magento.admin_assert' (errno: -1)";i:1;s:1168:"#0 /home1/ameridq4/public_html/pursuityourself/magento/app/code/core/Mage/Core/Model/Resource/Setup.php(645): Mage::exception('Mage_Core', 'Error in file: ...')
#1 /home1/ameridq4/public_html/pursuityourself/magento/app/code/core/Mage/Core/Model/Resource/Setup.php(421): Mage_Core_Model_Resource_Setup->_modifyResourceDb('install', '', '1.6.1.0')
#2 /home1/ameridq4/public_html/pursuityourself/magento/app/code/core/Mage/Core/Model/Resource/Setup.php(327): Mage_Core_Model_Resource_Setup->_installResourceDb('1.6.1.0')
#3 /home1/ameridq4/public_html/pursuityourself/magento/app/code/core/Mage/Core/Model/Resource/Setup.php(235): Mage_Core_Model_Resource_Setup->applyUpdates()
#4 /home1/ameridq4/public_html/pursuityourself/magento/app/code/core/Mage/Core/Model/App.php(417): Mage_Core_Model_Resource_Setup::applyAllUpdates()
#5 /home1/ameridq4/public_html/pursuityourself/magento/app/code/core/Mage/Core/Model/App.php(343): Mage_Core_Model_App->_initModules()
#6 /home1/ameridq4/public_html/pursuityourself/magento/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#7 /home1/ameridq4/public_html/pursuityourself/magento/index.php(87): Mage::run('', 'store')
#8 {main}";s:3:"url";s:10:"/magento/e";s:11:"script_name";s:18:"/magento/index.php";s:4:"skin";s:7:"default";}

我昨晚在工作正常和今天早上之间没有做任何事情......我昨天做的最后一件事是将默认商店名称从“默认商店”更改为“追求”。任何想法发生了什么以及如何解决?

1 个答案:

答案 0 :(得分:2)

问题是存在外键约束,其中一个表是MyISAM。此存储引擎不支持外键约束。 (source)。安装文件是Admin模块的文件,因此尝试将Mage_Admin模块表转换为InnoDB(在phpmyadmin或任何其他数据库客户端中执行):

alter table admin_assert engine=innodb;
alter table admin_role engine=innodb;
alter table admin_rule engine=innodb;
alter table admin_user engine=innodb;

如果他们错误地拥有MyISAM存储引擎,您可能还必须将其他表转换为InnoDB。这个blog有一个脚本(在运行这个脚本之前备份你的数据库)。除catalogsearch_fulltext(MyISAM)和临时表(MEMORY)之外,Magento核心中的每个表都是InnoDB。