为了账号安全,请及时绑定邮箱和手机立即绑定

SQLSTATE [42000]:语法错误或访问冲突:1075不正确的表定义;默认值为0。

SQLSTATE [42000]:语法错误或访问冲突:1075不正确的表定义;默认值为0。

PHP
MMTTMM 2021-05-02 16:38:53
迁移档案$table->increments('id');$table->foreign('user_id')->references('id')->on('users');$table->foreign('band_id')->references('id')->on('bands');$table->foreign('genre_id')->references('id')->on('genres');$table->foreign('cate_id')->references('id')->on('cates');$table->foreign('type_id')->references('id')->on('types');$table->integer('status');$table->date('date');$table->time('time');$table->decimal('price');$table->tinyIncrements('instrument');$table->string('instrument_detail',255);$table->timestamps();运行php artisan后迁移SQLSTATE [42000]:语法错误或访问冲突:1075不正确的表定义;默认值为0。只能有一个自动列,并且必须将其定义为键(SQL:创建表bookings(idint unsigned not null auto_increment主键,statusint不为null,date 日期不为null,time时间不为null,price十进制(8,2)不为null, instrumenttinyint unsigned不为null auto_increment主键, instrument_detailvarchar(255)不为null,created_at时间戳为null,updated_at时间戳为null)默认字符集utf8mb4整理utf8mb4_unicode_ci)而这下面SQLSTATE [42000]:语法错误或访问冲突:1075不正确的表定义;默认值为0。只能有一个自动列,并且必须将其定义为键
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

$table->unsignedTinyInteger('instrument', true);

第二个参数是布尔值,用于自动递增,默认为false



查看完整回答
反对 回复 2021-05-21
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

下句话:

$table->foreign('user_id')->references('id')->on('users');

只是告诉数据库在父/外部列之间建立链接,但是为了做到这一点,该列必须先前存在,所以:

$table->unsignedInteger('user_id'); // first this
$table->foreign('user_id')->references('id')->on('users'); // then this

您应该为每个外键执行此操作。

笔记:

Laravel不需要您定义此链接,因为它不需要使用此链接,仅出于数据库一致性的考虑。


查看完整回答
反对 回复 2021-05-21
  • 2 回答
  • 0 关注
  • 177 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信