2016-11-17 152 views
2
CREATE TABLE wp_locations (
     `id` INT(11) NOT NULL AUTO_INCREMENT, 
     `city` VARCHAR(255) NOT NULL, 
     `name` VARCHAR(255) NOT NULL, 
     CONSTRAINT `city_name` UNIQUE (`city`, `name`) 
    ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 

我得到一個SQL錯誤「#1071 - 指定的鍵過長;最大密鑰長度爲767個字節SQL錯誤#1071 - 指定的密鑰太長;最大密鑰長度爲767個字節

我在做什麼錯?

+1

你的組合鍵太長。設置單獨的鍵或減少列長度 –

+0

創建一個新的列'unique_id binary(16)',連接兩列,對它們進行散列並將** RAW hash **保存爲'unique_id',使unique_id'唯一。任務完成。 –

回答

3

MySQL的儲備總是最大金額爲UTF8場是4個字節,因此與255 + 255DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;你是在767最大密鑰長度的限制

只能降低單VARCHAR lenght或不使用複合鍵

+0

這是問題,我改變了它爲varchar 128和它的工作 –

+0

128×4×2> 767,你應該再減少(嘗試,讓我知道) – scaisEdge

+0

但正如我所說,它的工作原理,所以沒有問題了 –

相關問題