public function up()
{
Schema::create('jadwal_praks', function (Blueprint $table) {
$table->increments('id');
$table->integer('thnajrn_id', 10)->unsigned();
$table->foreign('thnajrn_id')->references('id')->on('tahun_ajarans');
$table->integer('prak_id', 10)->unsigned();
$table->foreign('prak_id')->references('Prak_kode')->on('mata_praks');
$table->integer('hari_id', 10)->unsigned();
$table->foreign('hari_id')->references('id')->on('haris');
$table->integer('jam_id', 10)->unsigned();
$table->foreign('jam_id')->references('id')->on('jams');
$table->integer('ruang_id', 10)->unsigned();
$table->foreign('ruang_id')->references('id')->on('ruangs');
$table->integer('kap_id', 10)->unsigned();
$table->foreign('kap_id')->references('id')->on('kapasitas');
$table->timestamps();
$table->rememberToken();
});
}
运行php artisan migrate
[Illuminate \ Database \ QueryException] SQLSTATE [42000]:语法错误 或访问冲突:1075表定义不正确;可以有 只有一个自动组合,必须将其定义为键(SQL:create table
jadwal_praks
(id
int unsigned not null auto_increment
主键,thnajrn_id
int unsigned not null auto_increment primary key,prak_id
int unsigned not null auto _increment primary key,hari_id
int unsigned not null auto_increment主键,jam_id
int unsigned not nul l auto_increment primary key,ruang_id
int unsigned not null auto_increment primary key,kap_id
int unsigned
not null auto_increment主键,created_at
timestamp null,updated_at
时间戳null,remember_token
v archar(100)null) 默认字符集utf8 collate utf8_unicode_ci)
这个
[PDOException] SQLSTATE [42000]:语法错误或访问冲突: 1075表定义不正确;只能有一个自动列和 它必须被定义为一个键
答案 0 :(得分:6)
根据我的观察,我会说你应该删除你添加到外国字段的default
值(例如):
$table->integer('thnajrn_id', 10)->unsigned();
要:
$table->integer('thnajrn_id')->unsigned();
PS:有了类似的经验,我现在知道这适用于我在Laravel 5.2中使用的一个项目。*
希望这会有所帮助:)
答案 1 :(得分:0)
当您使用$ table-> integer('thnajrn_id',10)-> unsigned();时这意味着您将第二个参数设置为true,它表示AutoIncrement
使用 table-> integer('thnajrn_id')-> length(10)-> unsigned();
答案 2 :(得分:0)
当您使用 $table->unsignedBigInteger('account_id')->nullable();
时,您仍然会遇到相同的错误,因为 nullable()
产生的默认值可能会产生相同的错误。所以总是把你的外键留空,无论是 nullable
还是 default(0)