- blogs:
- cles::blog
2018/02/10
MySQL/MariaDB に Error 1709: Index column size too large. The maximum column size is 767 bytes. と言われた時は
mysql charsetMySQL や MariaDB で文字コードを utf8mb4 にしようとすると以下のようなエラーに遭遇することがあります。
Error 1709: Index column size too large. The maximum column size is 767 bytes.
例えばこんな感じでデータベースを作ったときですね。
CREATE DATABASE hogedb CHARACTER SET utf8mb4;
これは InnoDB の最大キー長が 767 バイトに制限されているため。
この制限はある条件をクリアすると 3072 バイトまでに緩和*1することができます。
その条件は row_format が DYNAMIC もしくは COMPRESSED (これを設定するためには innodb_file_format が Barracuda であることが必要になります)であり、innodb_file_per_table、innodb_large_prefix が有効になっていること。具体的には my.cnf に以下のような設定を記述するだけです。ちなみに以下の設定は既に作成済みのテーブルには効果がないので、設定変更後にテーブルを作り直す必要があることに注意が必要です。
/etc/my.cnf.d/server.cnf
[mysqld]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = on
innodb_default_row_format = DYNAMIC # この設定が効かない場合には以下を参照
最後の行の設定ができない場合には、テーブルの CREATE 文に以下のような感じで ROW_FORMAT=DYNAMIC を追加してやる必要があります。
CREATE TABLE `hogetable` (
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9965
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(93927)
2 . 年次の人間ドックへ(93798)
3 . 福岡銀がデマの投稿者への刑事告訴を検討中(93749)
4 . 三菱鉛筆がラミーを買収(93612)
5 . 2023 年分の確定申告完了!(1つめ)(93591)
2 . 年次の人間ドックへ(93798)
3 . 福岡銀がデマの投稿者への刑事告訴を検討中(93749)
4 . 三菱鉛筆がラミーを買収(93612)
5 . 2023 年分の確定申告完了!(1つめ)(93591)
cles::blogについて
Referrers