大佬教程收集整理的这篇文章主要介绍了Laravel 8 - 强制模式在列定义中添加主键 [已修复],大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我将创建一个带有 char
列作为 priMary key
的表,并在其他表上使用它作为参考。
这是迁移:
scheR_813_11845@a::create('users',function (Blueprint $tablE) {
$table->ID();
$table->char('country_ID',2)->index();
$table->foreign('country_ID')->references('ID')->on('countrIEs')->ondelete('reStrict');
});
scheR_813_11845@a::create('countrIEs',function (Blueprint $tablE) {
$table->char('ID',2)->priMary();
});
Laravel 通过 @R_489_2763@
之后的 create table
在 char 列上添加索引,如下例所示:
create table `users` (
`ID` BIGINT UNSIGNED NOT NulL auto_INCREMENT PRIMary KEY,`country_ID` CHAR(2) NOT NULL,...
) ... ENGINE = INNODB;
@R_489_2763@ `users` ADD CONSTraiNT `users_country_ID_foreign` FOREIGN KEY (`country_ID`) REFERENCES `countrIEs` (`ID`) ON deletE REStriCT;
@R_489_2763@ `users` ADD INDEX `users_country_ID_index`(`country_ID`);
create table `countrIEs` (
`ID` CHAR(2) NOT NULL,...
) ... ENGINE = INNODB;
@R_489_2763@ `countrIEs` ADD PRIMary KEY `countrIEs_ID_priMary`(`ID`);
并且它总是失败,因为在创建表 countrIEs
时,对 countrIEs.ID
的约束已经存在并且国家表定义必须在 ID
列上有一个索引,否则会出现以下错误:
@H_920_3@missing index for consTraint 'users_country_ID_foreign' in the referenced table 'countrIEs'
如何强制 scheR_813_11845@a 压缩 ID
列定义中的索引(不是通过 @R_489_2763@
)以避免错误?
如下:
...
create table `countrIEs` (
`ID` CHAR(2) NOT NULL PRIMary KEY,...
) ... ENGINE = INNODB;
...
编辑(修复):
在@P.K.Tharindu 的帮助下,我刚刚将 countrIEs
迁移文件重命名为 users
迁移文件之前的日期,而 Laravel 在 users
文件之前运行它。
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的Laravel 8 - 强制模式在列定义中添加主键 [已修复]全部内容,希望文章能够帮你解决Laravel 8 - 强制模式在列定义中添加主键 [已修复]所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。