2013-01-16 56 views
-1

喜都可以有一個人plz幫助我, 而在MySQL中創建表我收到以下錯誤在mysql中創建表錯誤。 1071錯誤

MySQL錯誤1071:指定的鍵過長;最大密鑰長度是767字節

我的表格定義如下。

CREATE TABLE oauth_consumer (id char(36) NOT NULL , 
    name varchar(255) NULL , 
    date_entered datetime NULL , 
    date_modified datetime NULL , 
    modified_user_id char(36) NULL , 
    created_by char(36) NULL , 
    description text NULL , 
    deleted bool DEFAULT '0' NULL , 
    assigned_user_id char(36) NULL , 
    c_key varchar(255) NULL , 
    c_secret varchar(255) NULL, 
    PRIMARY KEY (id), 
    UNIQUE ckey (c_key) 
); 
+0

爲什麼我複製你的代碼並在sqlFiddle上運行它,它工作正常。 http://sqlfiddle.com/#!2/77276 –

+0

沒有問題在mysql提示還@Moiz Shaikh – gks

回答

0

查詢中沒有問題。可能你正在運行舊版本的MySql。使用新版本。如果使用的是新版本嘗試使用下面的查詢來創建表

CREATE TABLE `oauth_consumer` (
    `id` CHAR(36) NOT NULL, 
    `name` VARCHAR(255) NULL DEFAULT NULL, 
    `date_entered` DATETIME NULL DEFAULT NULL, 
    `date_modified` DATETIME NULL DEFAULT NULL, 
    `modified_user_id` CHAR(36) NULL DEFAULT NULL, 
    `created_by` CHAR(36) NULL DEFAULT NULL, 
    `description` TEXT NULL, 
    `deleted` TINYINT(1) NULL DEFAULT '0', 
    `assigned_user_id` CHAR(36) NULL DEFAULT NULL, 
    `c_key` VARCHAR(255) NULL DEFAULT NULL, 
    `c_secret` VARCHAR(255) NULL DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE INDEX `ckey` (`c_key`) 
) 
COLLATE='latin1_swedish_ci' 
ENGINE=InnoDB; 
+0

nop我使用最新的 –

+0

@MoizShaikh - 我的答案編輯。檢查我的查詢 –

+0

@MoizShaikh - 工作嗎? –

0

首先,你的數據庫的字符集是最有可能設置爲utf8,所以你的255個字符吹起來的765個字符;雖然接近,但不會超過767的強制限制,但它提供了一個爲什麼你達到這個限制的想法。

無論如何,不​​建議使用這樣一個寬鍵;你可以計算一個md5或sha1的值,並將其用於唯一鍵(btw,你應該使用散列的二進制表示)。