実現したいこと
VARCHAR(1000)
にインデックスが貼れない原因を知り、貼りたいです。
前提
レンタルサーバーをA社からB社に移行したところ、該当のソースコードのCREATE
がB社ではできず困りました。
発生している問題・エラーメッセージ
phpmyAdminで該当のソースコードのCREATE
を実行するとこちらのエラーメッセージが表示される状況です。
MySQL のメッセージ: #1071 - 索引のキーが長すぎます。最大 3072 バイトまでです。
該当のソースコード
問題のCREATE
がこちらで、今までA社ではできていました。
SQL
1CREATE TABLE IF NOT EXISTS tbl_names ( 2 id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 3 name VARCHAR(1000) CHARACTER SET utf8mb4 NOT NULL, 4 INDEX idx_names(name) 5);
試したこと(VARCHAR を減らす)
下記のように VARCHAR
を 768
に減らすとできました。(769
だと同様のエラーです。)
SQL
1CREATE TABLE IF NOT EXISTS tbl_names ( 2 id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 3 name VARCHAR(768) CHARACTER SET utf8mb4 NOT NULL, 4 INDEX idx_names(name) 5);
試したこと(索引キーのサポート状況の確認)
下記を実行すると1
が返りました。
SQL
1SELECT @@innodb_large_prefix;
下記を実行するとON
が返りました。
SQL
1SHOW VARIABLES LIKE 'innodb_large_prefix';
補足情報(FW/ツールのバージョンなど)
〇A社もB社も MySQL 5.7 でした。
〇A社は解約済みなのでクエリを試すことはできません。
どうすればVARCHAR(1000)
にインデックスを貼れるようになりますでしょうか?

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/07/29 04:36
2023/07/29 06:04