在laravel 9应用程序中运行迁移语句(mysql数据库):
$table->foreignId('notification_config_id')
->nullable()
->references('id')
->on('notification_configs')
->onUpdate('RESTRICT')
->onDelete('RESTRICT');
出现错误:
数据库状态[42000]:语法错误或访问冲突:1059标识符名称'notification_configs_notification_types_notification_config_id_foreign'太长(SQL:更改表notification_configs_notification_types
添加约束notification_configs_notification_types_notification_config_id_foreign
外键(notification_config_id
)在删除RESTRICT时引用notification_configs
(id
)在更新RESTRICT时
看起来索引名称是自动设置的,我可以手动设置吗?我尝试了:
$table->foreignId('notification_config_id')
->nullable()->references('id')
->on('notification_configs')
->onUpdate('RESTRICT')
->onDelete('RESTRICT')
->name('notification_configs_longname_ref');
但是同样的错误...怎么能修复呢?
谢谢!
1条答案
按热度按时间vptzau2j1#
可以使用
$table->foreign()
代替$table->foreignId()
。方法**foreign()**接受第二个参数作为键的名称。因此,您的迁移代码可以包含如下内容: