在我看来,这是一个常见的用例,所以我很惊讶关于它的信息如此之少,如果是重复的,我很抱歉,但我有搜索过了。:)
我正在将客户网站从一个 CMS 迁移到另一个 CMS,同时将其迁移到更新、更快的机器上。作为这项工作的一部分,我正在将 MySQL 数据库从旧服务器迁移到新服务器。
问题是旧服务器运行 MySQL 4 和新 MySQL 5。因此,当我mysqldump
在旧站点上执行操作,然后尝试在新站点上运行它时,我收到语法错误。
ERROR 1064 (42000) at line 178: You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right syntax to use
near 'BTREE (`id`),
KEY `f_ChangedOnWeb` (`f_ChangedOnWeb`),
KEY `f_AddressUpdate`' at line 56
我还尝试使用更老的语法,通过使用 --compatible mysql323 进行转储,但这只会导致
ERROR 1062 (23000) at line 2283: Duplicate entry '??????????' for key 2`...
在我看来这肯定是一个相当常见的用例,但我找不到任何帮助。可能我所有的谷歌搜索都淹没在无关的答案中。大多数人似乎都同意 mysqldump 是正确的答案,但没有人提到你可能会得到语法错误...
答案1
有MySQL 网站上的迁移文档。也许这会有帮助?
答案2
PRIMARY KEY TYPE BTREE
我把所有内容都改成 后,导入成功了PRIMARY KEY USING BTREE
。我不知道这个改变是否正确,但我想我们会看到...