首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLSTATE[42000]:语法错误或访问冲突: 1075不正确的表定义;只能有一个auto列,必须将其定义为键

SQLSTATE[42000]:语法错误或访问冲突: 1075不正确的表定义;只能有一个auto列,必须将其定义为键
EN

Stack Overflow用户
提问于 2017-02-05 14:48:27
回答 3查看 48.4K关注 0票数 11
代码语言:javascript
复制
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

照明\数据库\QueryException SQLSTATE42000:语法错误或访问冲突: 1075个不正确的表定义;只能有一个auto can,并且它必须定义为一个键(SQL: create jadwal_praks (id int无符号非空auto_increment ) 主键,thnajrn_id int无符号非空auto_increment主键,prak_id int无符号非空自动_increment主键,hari_id int无符号非空auto_increment主键,jam_id int无符号nul auto_increment主键,ruang_id int无符号非空auto_increment主键,kap_id int无符号 非空auto_increment主键、created_at时间戳空、updated_at时间戳空、remember_token v archar(100) null )默认字符集utf8排序规则utf8_unicode_ci)

还有这个

PDOException SQLSTATE42000:语法错误或访问冲突: 1075不正确的表定义;只能有一个auto列,必须将其定义为键

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-05 20:49:09

根据我的观察,我认为您应该从(例如)中删除添加到外域的default值:

代码语言:javascript
复制
$table->integer('thnajrn_id', 10)->unsigned(); 

至:

代码语言:javascript
复制
$table->integer('thnajrn_id')->unsigned();

PS:有着类似的经验,我知道目前我在Laravel5.2工作的一个项目就是这样做的。

希望这会有所帮助:)

票数 32
EN

Stack Overflow用户

发布于 2018-10-28 01:04:51

使用$table->integer('thnajrn_id', 10)->unsigned()时,这意味着将第二个参数设置为true,表示AutoIncrement

try

代码语言:javascript
复制
table->integer('thnajrn_id')->length(10)->unsigned();

更多信息

票数 12
EN

Stack Overflow用户

发布于 2021-06-01 22:41:10

当您使用$table->unsignedBigInteger('account_id')->nullable();时,仍然可以得到相同的错误,因为nullable()生成的默认值可能会产生相同的错误。所以始终保持您的外键为空,既不是nullable也不是default(0)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42053392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档