2009-11-16 103 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