2016-10-18 8 views
2

ある1071 - 指定されたキーが長すぎます。</p> <p>SQL-Befehl:最大キー長が、私はのSQLBackupをインポートするとき、私はエラー以下の私が持っています1000バイト

CREATE TABLE jos_hikashop_zone_link (
    zone_parent_namekey VARCHAR(255) NOT NULL, 
    zone_child_namekey VARCHAR(255) NOT NULL, 
    PRIMARY KEY (zone_parent_namekey, zone_child_namekey) 
) 
ENGINE = MYISAM 
AVG_ROW_LENGTH = 49 
CHARACTER SET utf8 
COLLATE utf8_general_ci 
MySQL meldet: Dokumentation 

1071 - 指定されたキーが長すぎました。キーの最大長は1000バイトです

ファイルをインポートする前に "GLOBAL storage_engine = 'InnoDb'"を設定しようとしました。

新しいSQLImportfileを取得できません。

ローカルマシンでXAMPPを使用しています。

+0

複合キーを510文字に指定しましたが、各UTF-8文字は4バイトの大きさになる可能性があります。そのため、MySQLでは2Kを超えるキーを要求しています。続行するには、複合キーのサイズを縮小します。 –

+0

どうすればいいですか? –

答えて

3

主キーは、両方のUTF8 VARCHAR(255)列の複数列の主キーであるため、索引サイズは両方の列のサイズです。

UTF8列の索引は、各文字が3バイトまでを取ることができるすべての可能な領域を自動的に割り当てます。したがって、インデックスサイズは255文字* 3バイト* 2列= 1530バイトです。

MyISAMのインデックスの制限は1000バイトです。 InnoDBのMySQL(5.7.7以上)を使用している場合を除き、InnoDBの制限はさらに小さくなります(767バイト)。この場合、デフォルトは3072バイトです。

インデックスサイズを縮小してください。通常、インデックスサイズが小さいほど、シークパフォーマンスが向上します。

関連する問題