我正在尝试将SQL转储导入另一台服务器。它在第一行失败了。我首先创建exp_actions
表,然后在其中插入一堆数据,但我得到了这个非常奇怪的错误。
SQL query:
--
-- Database: `ee_cmssite`
--
-- --------------------------------------------------------
--
-- Table structure for table `exp_actions`
--
CREATE TABLE `exp_actions` (
`action_id` INT( 4 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`class` VARCHAR( 50 ) NOT NULL DEFAULT '',
`method` VARCHAR( 50 ) NOT NULL DEFAULT '',
PRIMARY KEY ( `action_id` )
) ENGINE = MYISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT =21;
MySQL said:
#1146 - Table 'site_ee.exp_actions' doesn't exist
为什么不存在?我刚刚指示要创建它。我完全不知所措。我曾尝试使用和不使用IF_NOT_EXISTS
答案 0 :(得分:2)
如果有其他人遇到这个看似奇怪的错误 - 请参阅https://stackoverflow.com/a/11696069了解解决方案。
我有相同的症状,原因是一样的 - 转移到一台新机器我采取了简单的方法将数据库从我需要的mysql / data目录直接复制到新机器中,但有些是较新的InnoDb类型。这会导致Create Table throws表不存在错误。我不得不删除数据库并重新创建它,然后从sql dump导入。
答案 1 :(得分:0)
根据SQL脚本,该表存在于另一个数据库中:
-
- 数据库:
ee_cmssite
- --------------------------------------------- -----------
- 表
的表结构exp_actions
尝试使用ee_cmssite
数据库。
答案 2 :(得分:0)
虽然错误不明确,但我认为这与文件开头的缺失USE
有关。转储单个数据库时,mysqldump不会添加USE
语句。所以你应该添加:
USE `ee_cmssite`;