1

我只是使用 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 并在几秒钟后认为它无效吗?

4

2 回答 2

3

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

于 2009-11-16T23:43:04.950 回答
2

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

我不确定 MySQL 是否有问题。可能是文本编辑器或其他创建此工件的工具吗?

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

建议:

  • 查看 MySQL 转储生成的代码。直接从“马口”,为了观察,使用十六进制编辑器或各种文本编辑器打开[并且永远不要保存]。
  • 如果那里确实有额外的空间,请查看所述数据库的 MySQL 模式,看看那里是否没有某种奇怪的字符......?
  • 查看脚本的其他部分,看看长行是否类似地拆分
于 2009-11-16T23:45:10.817 回答