sql >> データベース >  >> RDS >> Mysql

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

    MySQLバージョン5.6では767バイト (および以前のバージョン)は、指定されたプレフィックス制限 InnoDBテーブルの場合。 MyISAMテーブルの長さは1,000バイトです。この制限は、MySQLバージョン5.7では3072バイトに引き上げられました。 (およびそれ以上)。

    また、大きな文字またはvarcharにインデックスを設定する場合にも注意する必要があります。 utf8mb4であるフィールド エンコードされている場合、インデックスプレフィックスの最大長である767バイト(または3072バイト)を4で割る必要があり、結果として 191になります。 。これは、utf8mb4の最大長が原因です。 文字は4バイトです。 utf8の場合 文字は3バイトになり、インデックスプレフィックスの最大長は 255になります。 (またはマイナスヌルターミネータ、254文字)。

    選択肢の1つは、VARCHARに下限を設定することです。 フィールド。

    別のオプション(この問題への対応 による )は、全量ではなく、列のサブセットを取得することです。つまり、:

    ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );
    

    適用するキーを取得する必要があるので微調整しますが、このエンティティに関するデータモデルを確認して、MySQLの制限に達することなく目的のビジネスルールを実装できる改善があるかどうかを確認する価値があるのではないかと思います。 。



    1. T-SQLで日付に日を追加する方法

    2. OCTET_LENGTH()関数がMySQLでどのように機能するか

    3. PostgreSQLの実行速度が遅い?ソースに到達するためのヒントとコツ

    4. Unicodeを完全にサポートするSQLiteで大文字と小文字を区別しない検索を実装する5つの方法