2017-03-08 59 views
0

我是MySql的新手!我試圖創建一個2主鍵或通常稱爲複合鍵的表。在MySQL上創建表時的兩個主鍵

CREATE TABLE MovedProduct 
(
    MigrationId nvarchar(150) NOT NULL, 
    ContextKey nvarchar(300) NOT NULL, 
    Model varbinary(65535) NOT NULL, 
    ProductVersion nvarchar(32) NOT NULL, 
    primary key(MigrationId,ContextKey) 
) 

但我收到一個錯誤,我找不出來。

Error Code: 1071. Specified key was too long; max key length is 1000 bytes 

我不會減少密鑰大小,因爲他們可以達到各自的大小。

爲了創建我的表格,我需要做些什麼特殊的事情嗎?

回答

1

你應該減少你的字段長度爲所涉及的領域..因爲一些字符集沒有爲一個字符只使用一個字節,但越是這樣..當這些的Fileds將存儲可以exeed的限制鍵長度

例如:

CREATE TABLE MovedProduct 
(
    MigrationId nvarchar(64) NOT NULL, 
    ContextKey nvarchar(128) NOT NULL, 
    Model varbinary(65535) NOT NULL, 
    ProductVersion nvarchar(32) NOT NULL, 
    primary key(MigrationId,ContextKey) 
) 

您的字符集用3個字節用於存儲一個字符,然後在樣品中你有3×150 + 3×400 = 1650
代替3 * 64 + 3 * 128 = 576

0

如果你不需要utf8,那麼明確指定拉丁文:

MigrationId varchar(150) CHARACTER SET latin1 NOT NULL, 
ContextKey varchar(300) CHARACTER SET latin1 NOT NULL, 
相關問題