我多次從10.0.29-MariaDB的-0ubuntu0.16.04.1在管線81MariaDB是否允許255個字符唯一索引?
ERROR 1071(42000)得到這個錯誤的Ubuntu 16.04:指定的鍵過長;最大關鍵 長度爲767個字節
目標通常是這樣的一行:
name VARCHAR(255) NOT NULL UNIQUE,
它更改爲VARCHAR(63),使錯誤消失。這是MariaDB中的一個錯誤嗎?
我多次從10.0.29-MariaDB的-0ubuntu0.16.04.1在管線81MariaDB是否允許255個字符唯一索引?
ERROR 1071(42000)得到這個錯誤的Ubuntu 16.04:指定的鍵過長;最大關鍵 長度爲767個字節
目標通常是這樣的一行:
name VARCHAR(255) NOT NULL UNIQUE,
它更改爲VARCHAR(63),使錯誤消失。這是MariaDB中的一個錯誤嗎?
要解決此錯誤,請一個
解決方法:做3072字節的限制,而不是767
255
到
191
在VARCHAR
(假設你的數值不是太長)ALTER .. CONVERT TO utf8
- 但這不允許表情符號和一些中文重新配置5.6.3或5.5.14:
SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=1;
SET GLOBAL innodb_large_prefix=1;
logout & login (to get the global values);
ALTER TABLE tbl ROW_FORMAT=DYNAMIC; (or COMPRESSED)
(版本號基於Oracle的MySQL;對於這個問題,MariaDB版本號不同。)
在這方面,我不認爲在5.7中有魔術般的變化,除了修改後的默認值,這很容易配置,所以沒有必要爲此轉換版本。最後的建議應該完全適用於MariaDB 10.0,這些選項可以在配置文件中設置。對於MariaDB版本,相關性如下:10.0和10.1具有InnoDB 5.6,10.2具有InnoDB 5.7。 – elenst
@elenst - 謝謝,我無法很快地發現5.x和10.x之間的映射。而且,是的,5.7「默認值」基本上防止了767再次發生。並在10.2.0中的相應代碼或者稍後稍微? –
10.2.0有InnoDB 5.7,它在發佈時已經可用,但我不會推薦任何人使用任何分支的零版本來進行除alpha測試之外的任何操作。 10.2.5-rc是目前最新的10.2版本,它有InnoDB 5.7.14。接下來的10.2.6-ga預計會有InnoDB 5.7.18。 – elenst
[#1071 - 指定的密鑰太長;最大密鑰長度是767字節](http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max-key-length-is-767-bytes) – jmoerdyk
@jmoerdyk - 該鏈接指的是'VARCHAR(500)utf8'。這裏的問題可能適用於'VARCHAR(255)utf8mb4'。 「解決方案」中有很多重疊,但我提供了一個可能更具體的解決方案。 –