2009-11-16 79 views
1

我刚使用MySQL mysqldump工具生成DDL,因此我可以在另一台机器上创建合理的数据库。当我尝试在目标机器上运行它,我得到这个错误:生成的MySQL DDL无法重新生成数据库

脚本行:

/*!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; 

:28键列“friendPrimaryKeyInYour电话”不表

运行此语句存在任何想法如何MySQL可以产生这个DDL和秒后认为它是无效的?

回答

2

该问题似乎与额外的空间...

我不知道MySQL在这里是错的。它可能是文本编辑器或其他创建此工件的工具吗?

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

建议:

  • 查找到由MySQL的转储产生的非常代码。直接从“马口”进行观察,用十六进制编辑器或各种文本编辑器打开[并且永不保存]。
  • 如果确实在那里有一个额外的空间,查看所述数据库的MySQL模式,看看是否有某种奇怪的字符在那里....?
  • 看看剧本的其他部分,看看长线是否类似分裂
3

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

+0

好抓!我正在使用mysqldump上的--result-file = droidwill.sql,并将此输出直接粘贴到MySQL脚本编辑器中。一路上一定会被咒骂。感谢多兄弟(S) – stanlick 2009-11-17 00:10:25