生成的MySQL DDL无法重新生成数据库

时间:2009-11-16 23:39:04

标签: mysqldump

我刚刚使用MySQL mysqldump工具生成DDL,因此我可以在另一台机器上创建理智的数据库。当我尝试在目标机器上运行它时,我收到此错误:

脚本行:28表格中不存在关键列'friendPrimaryKeyInYour Phone'

运行此声明:

/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `friend` (
  `id` bigint(20) unsigned NOT NULL,
  `dependentId` bigint(20) unsigned NOT NULL,
  `friendPrimaryKeyInYourPhone` int(10) unsigned NOT NULL,
  `friendNameInYourPhone` varchar(45) NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`id`,`friendPrimaryKeyInYourPhone`) USING BTREE,
  UNIQUE KEY `idx_dependendentId_phonePk` (`dependentId`,`friendPrimaryKeyInYour
Phone`),
  KEY `idx_phonePk` (`friendPrimaryKeyInYourPhone`),
  KEY `idx_dependentId` (`dependentId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

知道MySQL如何生成这个DDL,几秒后认为它无效吗?

2 个答案:

答案 0 :(得分:3)

friendPrimaryKeyInYour Phone中有一个空格 - 在错误消息和SQL中都有。必须是复制/粘贴(或某种换行)错误,将其删除并重试。

答案 1 :(得分:2)

问题似乎在于额外的空间......

我不确定MySQL是否有问题。是文本编辑器还是使用其他一些创建此工件的工具?

编辑:在查看更多详细信息时,字段名称的这一分割发生在第79个字符...许多文本演示工具使用80作为标准,这似乎证实了问题。

建议:

  • 查看MySQL转储产生的代码。直接来自“马口”,观察,使用十六进制编辑器或各种文本编辑器打开[并永不保存]。
  • 如果确实有一个额外的空间,请查看所述数据库的MySQL模式,看看是否有某种奇怪的字符......?
  • 查看脚本的其他部分,看看长行是否同样分裂