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

迁移档案


$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。只能有一个自动列,并且必须将其定义为键


MMTTMM
浏览 178回答 2
2回答

撒科打诨

$table->unsignedTinyInteger('instrument', true);第二个参数是布尔值,用于自动递增,默认为false

白猪掌柜的

下句话:$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不需要您定义此链接,因为它不需要使用此链接,仅出于数据库一致性的考虑。
打开App,查看更多内容
随时随地看视频慕课网APP