2016-05-05 8 views
0

簡単な質問。私は次のような表がある場合:MySQLのキーの長さの変更

CREATE TABLE `exampletable` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `textfield` varchar(700) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `textfield` (`textfield`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

にはどうすればtextfield KEYの長さを変更できますか? latin1の場合、デフォルトの長さは767、UTF8の場合は255です。しかし、たとえばlatin1テーブルがある場合、最大長255のキーを変更するにはどうすればよいですか?

答えて

1

あなたはVARCHAR(x)列の先頭部分にインデックスを作成することができていないことを確認してください

ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(255); 

を試してみてください。ここを参照してください:

http://dev.mysql.com/doc/refman/5.7/en/create-index.html

​​

これは検索に役立ちます。しかし、それは主キーまたはGROUP BYでは役に立ちません。

あなたはまた、そのようなテーブル定義でこれを含めることができます。私はあなたのポストから理解したよう

CREATE TABLE exampletable (
    id int(11) NOT NULL AUTO_INCREMENT, 
    textfield varchar(700) DEFAULT NULL, 
    PRIMARY KEY (id), 
    KEY partial_textfield (textfield(10)) 
) 
1

は、あなたが255を超える文字

+0

、それは列自体の長さを変えずにキーの長さを変更することはできませんか? –

+0

いいえ、長さのチェックは列にあります...キーは列から "派生"されています... – scaisEdge

関連する問題