ピックアップ記事
Laravelのmigrationファイルでprimary, uniqueキーが長すぎるとエラーになる

Laravelのmigrationファイルでprimary, uniqueキーが長すぎるとエラーになる

primaryキー、 uniqueキーがあまりに長いファイル名の場合、migrate実行時に以下のようなエラーとなってしまいます。

  1   Doctrine\DBAL\Driver\PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name '' is too long")

 

キー名を指定していない場合は、自動で生成されたキー名が長すぎることで、エラーとなっているようです。

例えば、以下のように設定した場合には、

「user_id_primary1_primary2_primary3_primary」のようなキー名になります。

$table->primary(['user_id,  primary1, primary2', 'primary3']);

 

解決方法

第2引数に設定したいキー名を渡してあげれば良いです。

$table->primary(['user_id, primary1, primary2', 'primary3'], 'user_table_primary');

 

ちなみにですが、

uniqueキーの場合、設定したキー名が使用されるのですが、

primaryキーの場合は、テーブルに複数存在しないためなのか、キー名は設定されないようです。

 

そのため、dummy等の適当な名前を設定しておく等でも問題ないかと思います。

気になるかたは、primary, uniqueを設定したテーブル作成後、「show create table テーブル名」で実行すれば、確認できるかと思います。

おすすめの記事