Migration Laravel primaire (ou clé) " le nom de L'identificateur est trop long"
J'ai un simple fichier de migration Laravel spécifiant une clé primaire composite :
// ...
public function up()
{
Schema::create('my_super_long_table_name', function($table)
{
$table->integer('column_1');
$table->integer('column_2');
$table->integer('column_3');
$table->primary(['column_1', 'column_2', 'column_3']);
});
}
// ...
Et lors de l'exécution php artisan migrate
cette erreur est générée :
SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name 'my_super_long_table_name_column_1_column_2_column_3' is too long
17
demandé sur
Ifnot
2015-02-20 13:37:17
1 réponses
spécifiez simplement le nom de la clé lors de sa création (avec le second argument pour primary
).
$table->primary(['column_1', 'column_2', 'column_3'], 'my_long_table_primary');
suivant,
si vous avez une erreur comme You have an error in your SQL syntax ...
après cette modification s'il vous plaît assurez-vous que vous n'utilisez pas le mot réservé par votre moteur de base de données pour votre nom de clé.
par exemple pour MySQL : http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html
Astuce : primary
est réservée, donc ne l'utilisez pas ;)
32
répondu
Ifnot
2015-02-20 10:37:17