2015-05-13 29 views
1

設計數據庫和本地服務器中的表使用MySQL 5.6.17並導出到* .sql文件。MySQL:#1293 - 錯誤的表定義

當嘗試導入* .sql文件到Live服務器(的MySQL 5.1.36)得到了如下錯誤:

#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 

Understood the issue through this link

有什麼辦法可以導入本地服務器的*。 SQL文件到Live服務器而不更新MySQL版本?

表:

  CREATE TABLE 'currency' (
      'id' int(11) NOT NULL AUTO_INCREMENT, 
      'currency_name' varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT 
     NULL, 
      'country' varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
      'currency' varchar(5) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
      'created_by' int(11) NOT NULL, 
      'created_on' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
      'status' int(1) NOT NULL DEFAULT '1', 
      'modified_by' int(11) DEFAULT NULL, 
      'modified_on' timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP, 
      PRIMARY KEY ('id')) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8; 

注: - 在Windows Server運行WAMP(本地服務器)和QNAP(直播服務器)。

回答

1

沒有直接的方法來做到這一點,因爲這不是MySQL Server 5.6.5之前的任何版本的有效表定義。

你可以用手或用類似sedperl工具編輯轉儲文件來修改違規行,或者你可以更改源服務器上的表定義......但那麼你的應用程序,這大概預計此行爲,不會正常工作。

您還可以修改表定義以使其對5.1有效,只有一個自動時間戳,並使用觸發器獲取所需行爲的其餘部分。

最好的辦法,當然是其中之一:

  • 更新5.1服務器到5.5再到5.6,或

  • 爲5.1服務器進行開發時,總是使用5.1在開發環境中,所以你不會陷入這樣的情況,依賴於與舊版部署不兼容的新特性......但記住,版本5.6中有一些非常顯着的改進。