Laravel 迁移主要(或关键)"Identifier name is too long"
Laravel migration primary (or key) "Identifier name is too long"
我有简单的 Laravel 指定复合主键的迁移文件:
// ...
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']);
});
}
// ...
而当 运行 php artisan migrate
时抛出此错误:
SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name 'my_super_long_table_name_column_1_column_2_column_3' is too long
创建时只需指定键名(第二个参数为primary
)。
$table->primary(['column_1', 'column_2', 'column_3'], 'my_long_table_primary');
接下来,
如果您在修改后出现类似 You have an error in your SQL syntax ...
的错误,请确保您没有使用数据库引擎的保留字作为键名。
例如 MySQL :http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html
提示:primary
已保留,请勿使用 ;)
我有简单的 Laravel 指定复合主键的迁移文件:
// ...
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']);
});
}
// ...
而当 运行 php artisan migrate
时抛出此错误:
SQLSTATE[42000]: Syntax error or access violation: 1059 Identifier name 'my_super_long_table_name_column_1_column_2_column_3' is too long
创建时只需指定键名(第二个参数为primary
)。
$table->primary(['column_1', 'column_2', 'column_3'], 'my_long_table_primary');
接下来,
如果您在修改后出现类似 You have an error in your SQL syntax ...
的错误,请确保您没有使用数据库引擎的保留字作为键名。
例如 MySQL :http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html
提示:primary
已保留,请勿使用 ;)