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 迁移向我的数据库表添加了一些主键。怎样防止形成呢?的主要内容,如果未能解决你的问题,请参考以下文章