[解決済み] MySQL エラー: キーの長さがないキー指定
質問
主キーがvarchar(255)であるテーブルがあります。255文字では足りない場合があります。フィールドをテキストに変更してみましたが、以下のエラーが発生します。
BLOB/TEXT column 'message_id' used in key specification without a key length
どうすれば直るのでしょうか?
edit: このテーブルには複数のカラムを持つ複合主キーがあることも指摘しておきます。
解決方法は?
このエラーは、MySQL が BLOB の最初の N 文字だけをインデックスすることができるためです。
TEXT
カラムを使用します。したがって、このエラーは主にフィールド/カラムのタイプが
TEXT
またはBLOBに属するもの、あるいは
TEXT
または
BLOB
のようなタイプは
TINYBLOB
,
MEDIUMBLOB
,
LONGBLOB
,
TINYTEXT
,
MEDIUMTEXT
および
LONGTEXT
主キーやインデックスを作ろうとすること。完全な
BLOB
または
TEXT
長さの値がない場合、MySQL はカラムが可変で動的なサイズであるため、カラムの一意性を保証することができません。そのため
BLOB
または
TEXT
型をインデックスとして使用する場合、MySQL がキーの長さを決定できるように N の値を提供する必要があります。しかし、MySQL は
TEXT
または
BLOB
.
TEXT(88)
は、単に動作しません。
このエラーは、テーブルのカラムを
non-TEXT
と
non-BLOB
のようなタイプです。
VARCHAR
と
ENUM
を
TEXT
または
BLOB
タイプで、カラムが一意制約またはインデックスとして既に定義されている場合。テーブルの変更 SQL コマンドは失敗します。
この問題を解決するには
TEXT
または
BLOB
カラムをインデックスまたは一意制約から削除するか、別のフィールドを主キーに設定してください。それができない場合で、かつ
TEXT
または
BLOB
カラムを使用するようにします。
VARCHAR
という型を作り、それに長さの制限をかける。デフォルトでは
VARCHAR
は最大255文字に制限され、その制限は宣言のすぐ後にある括弧の中で暗黙的に指定されなければなりません、すなわち
VARCHAR(200)
は、200文字に制限されます。
を使用しない場合でも
TEXT
または
BLOB
というエラーメッセージが表示されることがあります。を指定した場合などに発生します。
VARCHAR
カラムを主キーにした場合、そのカラムの長さや文字サイズを誤って設定した場合。
VARCHAR
は256文字までしか受け付けないので、例えば
VARCHAR(512)
を使用すると、MySQL は自動的に
VARCHAR(512)
を
SMALLTEXT
この場合、そのカラムがプライマリキーまたはユニークもしくはユニークでないインデックスとして使用されると、キーの長さに関するエラー1170が発生します。この問題を解決するために、256以下の数字を
VARCHAR
フィールドを使用します。
参考にしてください。 MySQL エラー 1170 (42000)。BLOB/TEXT カラムがキー長なしでキー指定で使用されています。
関連
-
[解決済み】MySQLエラー#1071 - 指定されたキーが長すぎる; キーの最大長は767バイトです。
-
[解決済み] MySQL エラー: キーの長さがないキー指定
-
[解決済み] ルートユーザーでログインしているのに、phpMyAdminがデータベースを作成する権限がないと言う
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] MySQL型テキストの最大長
-
[解決済み] CSVファイルをMySQLのテーブルにインポートするには?
-
[解決済み】PostgreSQLで主キーの自動インクリメントを設定する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Fatal error: mysqldをrootで実行する方法は、マニュアルの「セキュリティ」セクションをお読みください。
-
[解決済み】MySQLのエラーコードです。MySQL WorkbenchでUPDATE中に1175のエラーが発生しました。
-
[解決済み】MySQLのforeachループ
-
[解決済み] mysql.pluginテーブルを開くことができません。mysql_upgradeを実行し、作成してください。
-
[解決済み] MySQLで「一意のテーブル/エイリアスでない」場合
-
[解決済み] mysql 拡張は非推奨で、将来的に削除されます: 代わりに mysqli か PDO を使ってください [重複] 。
-
[解決済み] このMySQLエラー Incorrect column specifier for column COLUMN NAMEを回避するにはどうしたらよいですか?
-
[解決済み] 1行目の列 'id' に不正な整数値 '' があります。
-
[解決済み] テーブルがクラッシュしたと判定されたため、修復する必要があります。
-
[解決済み] エラー 2005 (hy000)。Google Cloud SQL クライアントの MySQL サーバーホスト '[35.232.51.216]' (0) が不明です。