laravel 5 迁移向我的数据库表添加了一些主键。怎样防止形成呢?

Posted

技术标签:

【中文标题】laravel 5 迁移向我的数据库表添加了一些主键。怎样防止形成呢?【英文标题】:laravel 5 migration add some primary keys to my database table. how to prevent form it? 【发布时间】:2015-10-15 11:50:07 【问题描述】:

当我按如下方式创建 Laravel5 迁移时,它会添加“linkdesc”列作为主键。当我阅读 laravel5 迁移的文档时,它没有提到 $table->text('description'); 这给出了数据库中的主键。 有什么办法可以防止在 laravel5 中自动添加主键? 还有其他迁移功能会提供这种不需要的主键吗?

我的迁移如下

Schema::create('articles', function (Blueprint $table) 

        $table->primary(['pemail', 'linkid']);
        $table->bigInteger('linkid');
        $table->string('pemail');
        $table->string('linkname');
        $table->string('linkurl');
        $table->integer('linorder');
        $table->text('linkdesc')->nullable();


    );

【问题讨论】:

为什么要删除标准的id 主键? 我已经运行了这个迁移,一切都符合预期。 pemail和linkid有复合主键,linkdesc没有键。 @Martin Bean:我已经规范化了我所有的数据库表。所以我摆脱了所有不必要的列 @jedrzej.kurylo :不.. 它仍然给问题。请参考此截图mywebengineer.com/other/stckoverflowImages/lv-migration.jpg 【参考方案1】:

我认为您误读了在 phpMyAdmin 中获得的信息。你有 primary 单词 inactive 无法在linkdesc 列的行中单击它,并且你认为 Laravel 为该列创建主键。

但事实完全不同——它不活跃不是因为 Laravel 自动为这个字段创建了主键,而是因为它是一个文本字段并且文本字段不能是主键。

您可以在 Indexes 上单击 PhpMyAdmin 时验证它 - 它应该在表格下方 - 您会看到 linkdesc 列上没有主键。

【讨论】:

以上是关于laravel 5 迁移向我的数据库表添加了一些主键。怎样防止形成呢?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 迁移:无法添加外键约束

在 Laravel 5.1 中添加带有迁移的列后,无法在我的数据库中修改“updated_at”

Laravel 向表中添加外键

完全重置 Laravel 5 迁移的东西?

Laravel迁移在现有数据库表中添加列问题

laravel 5.4 迁移问题