时间戳转换器

Laravel 上的“外键约束格式不正确”

日期:2023-02-24     浏览:271    
【中文标题】Laravel 上的“外键约束格式不正确”【英文标题】:"Foreign key constraint is incorrectly formed" on Laravel 【发布时间】:2021-05-26 00:06:21 【问题描述】:

我正在尝试为我的数据库创建一个新表。 我之前创建了一个带有 PK (IdCorso) 的表 (tipo),然后创建了另一个带有与 Tipo 关联的外键的表 (corsoscii)。 当我为 corsoscii 执行 artisan 命令时 php artisan migrate --path='./database/migrations/2021_02_23_155544_create_corsoscii_table.php' 它给了我这个错误:

("SQLSTATE[HY000]: General error: 1005 Can't create table impianto_scii.corsoscii (errno: 150 "Foreign key constraint is incorrectly formed")")

这是“tipo”的设置代码

public function up()
    
        Schema::create('tipo', function (Blueprint $table) 
            $table->increments('idCorso');
            $table->string('descrizione');
            $table->timestamps();
        );
    

...对于“corsoscii”

  public function up()

    Schema::create('corsoscii', function (Blueprint $table) 
        $table->increments('idCorso');
        $table->integer('tipo');
        $table->string('nome');
        $table->integer('membriMax');
        $table->date('inizio');
        $table->date('fine');
        $table->timestamps();

    );

    Schema::table('corsoscii', function(Blueprint $table)

        $table->foreign('tipo')
            ->references('idCorso')->on('tipo')
            ->onDelete('cascade');
        
        $table->primary('idCorso');
    );

我是 Laravel 的新手,欢迎任何建议。

【问题讨论】:

我认为$table->integer('tipo');应该是$table->integer('tipo')->unsigned();来匹配相同的数据类型 “它不起作用”不是很准确,总是返回相同的错误?这是你的数据库引擎 InnoDB? 出现同样的错误。是的,我的数据库引擎是 InnoDB 【参考方案1】:

$table->integer('tipo'); 需要完全匹配它作为外键的字段。

$table->increments('idCorso'); 生成一个unsignedInteger,所以它应该是这样的。

$table->unsignedInteger('tipo');

如果您的迁移使用bigIncrements,则需要使用:

$table->unsignedBigInteger('tipo');

【讨论】:

@porloscerrosΨ 你说得对,我很抱歉。 Laravel 现在默认使用 bigIncrements 创建新的迁移,因此我很困惑。更新了答案。【参考方案2】:

请先运行

php artisan migrate:rollback

然后删除“corsoscii”表。然后尝试这些更改。

Schema::create('corsoscii', function (Blueprint $table) 
            $table->increments('idCorso');
            $table->integer('tipo')->unsigned();;
            $table->string('nome');
            $table->integer('membriMax');
            $table->date('inizio');
            $table->date('fine');
            $table->timestamps();

        );

        Schema::table('corsoscii', function(Blueprint $table)

            $table->foreign('tipo')
                  ->references('idCorso')->on('tipo')
                  ->onDelete('cascade');
        );

首先尝试 unsigned() 为tipo,然后idCorso 已经是主键,当你将使用increments() 方法时。然后运行

php artisan migrate

这会很好。我试过了。

【讨论】:

相关文章

laravel errno 150 外键约束格式不正确

{】laravelerrno150外键约束格式不正确【英文标题】:laravelerrno150foreignkeyconstraintisincorrectlyformed【发布时间】:2017-04-1307:25:45【问题描述】:谁能帮我解决这个问题?有3个表有2个外键:Schema::create(\'users\',function(Blueprint$table)$table->...}

Laravel 迁移:“外键约束格式不正确”(errno 150)

{】Laravel迁移:“外键约束格式不正确”(errno150)【英文标题】:Laravelmigration:"Foreignkeyconstraintisincorrectlyformed"(errno150)【发布时间】:2015-12-1615:46:36【问题描述】:迁移我的数据库时,出现此错误。下面是我的代码,后面...}

laravel 8 (errno: 150 "外键约束格式不正确")

{】laravel8(errno:150"外键约束格式不正确")【英文标题】:laravel8(errno:150"Foreignkeyconstraintisincorrectlyformed")【发布时间】:2021-12-3011:43:49【问题描述】:我尝试在最后一个php和laravel8中创建论坛。我在laravel8中购买了udemy...}

Laravel 迁移 (errno: 150 "外键约束格式不正确")

{】Laravel迁移(errno:150"外键约束格式不正确")【英文标题】:Laravelmigration(errno:150"Foreignkeyconstraintisincorrectlyformed")【发布时间】:2018-05-2313:24:04【问题描述】:我有一个订单表和一个sell_shipping_labels,它将orders.id引用...}

Laravel-7 迁移中的外键约束形成错误

{】Laravel-7迁移中的外键约束形成错误【英文标题】:ForeignkeyconstraintisincorrectlyformedinLaravel-7migration【发布时间】:2020-12-2311:57:18【问题描述】:当您使用laravel迁移应用外键时,会出现此类错误“外键约束格式不正确”迁移的默认...}

150“外键约束格式不正确”

{】150“外键约束格式不正确”【英文标题】:150"Foreignkeyconstraintisincorrectlyformed"【发布时间】:2021-11-0720:51:30【问题描述】:我在迁移表时遇到问题。我有一个带有字符串id的users表,并且该表是之前使用SQL创建的,没有...}

MySQL + Rails:errno:150“外键约束格式不正确”

{】MySQL+Rails:errno:150“外键约束格式不正确”【英文标题】:MySQL+Rails:errno:150"Foreignkeyconstraintisincorrectlyformed"【发布时间】:2017-01-0503:56:04【问题描述】:我正在尝试迁移我的RailsMySQL数据库,但出现以下错误:ActiveRecord:...}

一般错误:1005 无法创建表 errno:150“外键约束格式不正确”)

{】一般错误:1005无法创建表errno:150“外键约束格式不正确”)【英文标题】:Generalerror:1005Can\'tcreatetableerrno:150"Foreignkeyconstraintisincorrectlyformed")【发布时间】:2018-02-0409:50:58【问题描述】:块引用SQLSTATE[HY000]:一般错误:10...}

errno: 150 "外键约束格式不正确 - mysql

{】errno:150"外键约束格式不正确-mysql【英文标题】:errno:150"Foreignkeyconstraintisincorrectlyformed-mysql【发布时间】:2018-09-0421:46:13【问题描述】:我正在尝试为学校项目创建数据库。我收到标题中指定的错误,不知道如何解决它...}

#1005 - 没有 puedo crear tabla `blog`.`carros`(错误:150“外键约束格式不正确”)

{】#1005-没有puedocreartabla`blog`.`carros`(错误:150“外键约束格式不正确”)【英文标题】:#1005-Nopuedocreartabla`blog`.`carros`(Error:150"Foreignkeyconstraintisincorrectlyformed")【发布时间】:2019-05-0205:15:30【问题描述】:USEblog;SETSQL_MODE="NO}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号