テーブルを作成するときに、興味深い問題に遭遇しました。「指定されたキーが長すぎます。キーの最大長は 767 バイトです」というメッセージが表示されました。説明から、キーが長すぎて、指定された制限の 767 バイトを超えているようです。 以下は問題を引き起こすテーブル構造です テーブル `test_table` を作成します ( `id` int(11) 符号なし NOT NULL AUTO_INCREMENT, `name` varchar(1000) NOT NULL デフォルト '' `link` varchar(1000) NOT NULL デフォルト '', 主キー (`id`)、 キー `name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=1 デフォルト CHARSET=utf8mb4; 名前の長さを1000可変文字に設定していることがわかります。utf8mb4エンコーディングが使用されているため、サイズは1000 * 4 > 767になります。 興味のある学生は 解決策1
my.cnf の設定 グローバル innodb_large_prefix を on に設定します。 グローバル innodb_file_per_table を on に設定します。 グローバル innodb_file_format=BARRACUDA を設定します。 グローバル innodb_file_format_max=BARRACUDA を設定します。 上記の3072バイトの理由は次のとおりです。 InnoDB ページのデフォルト サイズは 16k であることがわかっています。これは Btree 構成であるため、リーフ ノード上のページには少なくとも 2 つのレコードが含まれている必要があります (そうでない場合、リンク リストに退化します)。 解決策2テーブルを作成するときに、row_format=DYNAMICを追加します。 テーブル `test_table` を作成します ( `id` int(11) 符号なし NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL デフォルト '' `link` varchar(255) NOT NULL デフォルト '' 主キー (`id`)、 キー `name` (`name`) )ENGINE=InnoDB デフォルト文字セット=utf8mb4 row_format=DYNAMIC; このパラメータの機能は次のとおりです MySQL インデックスは 767 バイトしかサポートしておらず、utf8mb4 の各文字は 4 バイトを占めるため、インデックスの最大長は 191 文字、つまり varchar(191) に限られます。より大きなフィールドを使用する場合は、MySQL をデータ圧縮をサポートするように設定し、テーブル属性 row_format ={DYNAMIC|COMPRESSED} を変更する必要があります。 これで、MySQL インデックスが長すぎる問題の解決方法についての記事は終了です。MySQL インデックスが長すぎる問題の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: pdf.js を使用して Vue で PDF ファイルをプレビューする方法
記事のタイトルが「模造虫眼鏡」なのはなぜですか?今日お話ししたいのは、一般的に言われているような、マ...
:is と :where とは何ですか? :is()と:where()は、セレクターを作成するとき...
この記事では、centos7 環境でバイナリ インストール パッケージを使用して mysql5.6 ...
目次1. セットとは何か2. セットコンストラクタ2.1) 配列2.2) 文字列2.3) 議論2.4...
以前、ブロガーは VMware 仮想マシンに Ubuntu システムをインストールしました。まだイン...
キーの入力を求められた場合は、[キーがありません]を選択します。デスクトップエクスペリエンスを選択す...
私はApacheを使ったことがありません。仕事を始めてからはずっとnginxを使っていました(運用保...
最近、次のような効果を達成する必要がある最初は、CSS3D回転を使用して記述すると、次の効果しか得ら...
ORM とは何ですか? ORM は Object Relational Mapping の略で、オブ...
1. データベースの文字セットを確認するデータベースの文字セットは、Linux で設定された環境変数...
この記事の例では、スライディングブロック効果を実現するための小さなプログラムの具体的なコードを参考ま...
目次メイントピック1. UbuntuにDockerをインストールする2. DockerにROS2-F...
この記事の例では、キャンバスをベースにした超クールな水の光の効果を実装するための具体的なコードを参考...
DataframeはSpark 1.3.0で導入された新しいAPIで、Sparkで大規模な構造化デー...
序文:データベースのバックアップの重要性は、特にデータの損失が深刻な結果を招く可能性がある実稼働環境...