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 テーブル名」で実行すれば、確認できるかと思います。