MySQL エラー #1071: 最大キー長を超えました
VARCHAR データ型の列を含む MySQL テーブルに一意のキー制約を追加すると、次のエラーが発生する場合があります:
#1071 - Specified key was too long; max key length is 767 bytes
このエラーは、VARCHAR 列を合わせた長さが以下の場合でも発生します。キーの最大長。MySQL バージョン 5.6 以前では 767 バイトです。
エラーの原因
MySQL バージョン 5.6 以前の InnoDB テーブルのプレフィックス制限は 767 バイトです。これは、キー列のプレフィックスを組み合わせた長さがこの制限を超えることができないことを意味します。 MyISAM テーブルの場合、キーの最大長は 1,000 バイトです。
この例では、列 column1 と column2 のデータ型はそれぞれ VARCHAR(20) と VARCHAR(500) です。これは、合計の長さが 522 バイトになることを意味し、767 バイト制限未満に十分なマージンが残ることになります。ただし、エラー メッセージは、これが当てはまらないことを示しています。
説明
エラーの理由は、MySQL が VARCHAR カラムに可変長のマルチバイト エンコーディングを使用しているためです。これは、VARCHAR 列の各文字をさまざまなバイト数で表現できることを意味します。たとえば、VARCHAR(20) 列は最大 20 文字を保持できますが、UTF-8mb4 などのワイド文字形式でエンコードされている場合、各文字は最大 3 バイトを占める可能性があります。 、キーの実際の長さは、各列に格納できる文字列の最大長によって決まります。この場合、column1とcolumn2の文字列の最大長は、それぞれ20
3バイト = 60バイト、5003バイト = 1500バイトです。これにより、合計 60 1500 = 1560 バイトとなり、最大キー長の 767 バイトを超えます。解決策
この問題を解決するには、次の解決策を検討できます。
- VARCHAR 列の最大長を減らします。
- たとえば、column1 のデータ型を VARCHAR(15) に変更できます。 短いキー プレフィックスを使用します。
- column2 フィールド全体にインデックスを作成する代わりに、column2 フィールドのサブセットのみを使用できます。 column2(200) など。 より長いキー長をサポートする別のテーブル エンジンを使用してください。
- MyISAM テーブルの最大キー長は 1,000 バイトで、要件には十分な場合があります。 MySQL バージョン 5.7 以降にアップグレードしてください。
- MySQL 5.7 以降のバージョンの最大キー長は3072 バイト。柔軟性がさらに高まります。
以上が一意のキーを作成するときに MySQL エラー #1071: 最大キー長を超えましたが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

mysqlviewshavelimitations:1)supportallsqloperations、制限、dataManipulationswithjoinsorubqueries.2)それらは、特にパフォーマンス、特にパルフェクソルラージャターセット

reperusermanmanagementInmysqliscialforenhancingsecurationsinginuring databaseaperation.1)usecreateusertoaddusers、指定connectionsourcewith@'localhost'or@'% '。

mysqldoes notimposeahardlimitontriggers、しかしpracticalfactorsdeTerminetheireffectiveuse:1)serverconufigurationStriggermanagement; 2)complentiggersincreaseSystemload;

はい、それはssafetostoreblobdatainmysql、butonsiderheSeCactors:1)Storagespace:blobscanconsumesificantspace.2)パフォーマンス:パフォーマンス:大規模なドゥエットブロブスメイズ階下3)backupandrecized recized recized recize

PHP Webインターフェイスを介してMySQLユーザーを追加すると、MySQLI拡張機能を使用できます。手順は次のとおりです。1。MySQLデータベースに接続し、MySQLI拡張機能を使用します。 2。ユーザーを作成し、CreateUserステートメントを使用し、パスワード()関数を使用してパスワードを暗号化します。 3. SQLインジェクションを防ぎ、MySQLI_REAL_ESCAPE_STRING()関数を使用してユーザー入力を処理します。 4.新しいユーザーに権限を割り当て、助成金ステートメントを使用します。

mysql'sblobissuitable forstoringbinarydatawithinarationaldatabase、whileenosqloptionslikemongodb、redis、andcassandraofferferulesions forunstructureddata.blobissimplerbutcanslowdowdowd withwithdata

toaddauserinmysql、使用:createuser'username '@' host'identifidedby'password '; here'showtodoitsely:1)chosehostcarefilytoconを選択しますTrolaccess.2)setResourcelimitslikemax_queries_per_hour.3)usestrong、uniquasswords.4)endforcessl/tlsconnectionswith

toavoidcommonMonmistakeswithStringDatatypesinmysql、undultingStringTypenuste、choosetherightType、andManageEncodingandCollationsEttingtingive.1)Usecharforfixed-LengthStrings、Varcharforaible Length、AndText/Blobforlardata.2)setCurrectCherts


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。
