底辺SE奮闘記

年収300万SEブログ

【Laravel】artisan migrateでPDOException::("SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name '~' is too long")

migrationファイルで

<?php
//中略

$table->unique([
    'hoehoge',
    'fugafuga',
    'piyopiyo'
]);

//中略

のようにして、

PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name '~' is too long")

というエラーに悩まされる場合、あると思います。

これはLaravelが自動生成するインデックス名が長すぎるために発生しています。

uniqueメソッドは第二引数でインデックス名が指定できるので、

<?php
//中略

$table->unique([
    'hoehoge',
    'fugafuga',
    'piyopiyo'
], 'hfp_unique');

//中略

などとしましょう