2017-03-06 42 views

回答

0

可能是你有參與這還有很長的字符定義索引一些列..eg varchar(255)在你表目的地..你可以TRU減少這種DIMENSIONE時不需要你的新表建立如

col1 varchar(255), 
col2 varchar(255), 

col1 varchar(16), 
col2 varchar(32), 

(記住,有些字符編碼reauire更多的則單值的字符)

+0

我的目的地是空的沒有什麼,表目的地不存在。這是空的新鮮的數據庫 – user3871754

+0

然後創建目標表,減少涉及列的維度。 – scaisEdge

+0

這是一個大型數據庫,我不能單獨爲每個數據庫單獨更改 – user3871754

0

此錯誤的一個常見原因可能是本地數據庫使用UTF8字符集(每個字符最多3個字節),而遠程數據庫使用utf8mb4字符集,每個字符最多可以使用4個字節。由於索引長度(例如varchar colums上的唯一索引或主鍵)是用字符長度定義的,但是使用它們的字節表示方式在內部存儲,所以對於唯一的varchar或text列,最大長度較低。

要解決此問題,還可以將遠程數據庫的默認字符集設置爲utf8而不是utf8mb4。

+0

但我只使用utf8。我添加了屏幕,你能看看我應該改變什麼嗎? – user3871754

+0

正如你在截圖中看到的那樣,在本地,使用latin1作爲遠程的字符集,你使用的是utf8。 Latin1是一個單字節編碼(即每個字符只佔用一個字節)。更改字符集是完全一樣的,你應該能夠移動你的數據庫。 –

相關問題