当前位置: 首页 > 知识库问答 >
问题:

Alter table在Phinx迁移中添加默认自动递增主键“id”

洪鸿博
2023-03-14

我已经使用Phinx迁移创建了一个表

$table = $this->table('verification', ['id' => false, 'primary_key' => ['validation_id']]);
$table->addColumn('validation_id','string',['limit' => 15, 'null' => false])
        ->addColumn('status','string', ['null' => true])
    >create();

现在在一个单独的迁移中,我想改变表,并将id值设置为true,并将该id作为主键(默认行为)。并将validation_id作为唯一索引。

我知道如何先删除表并创建新表。但是我不想放下桌子,只是改变它。如何改变表添加回自动增量默认id列?

共有1个答案

车峻熙
2023-03-14

在数据库中更改结构的一个简单方法是使用数据库客户端,如equalpro、mysql worktable、sqlyog等。

进行更改时,运行以下命令:

bin/cake bake migration_diff NameOfTheMigrations

此命令将为您创建一个迁移文件,其中包含您在db客户端中所做的所有更改。

备注:

如果没有以前的迁移文件,则必须首先运行以下命令:

bin/cake migrations dump

阅读更多:

https://book.cakephp.org/migrations/3/en/index.html#generating-两种数据库状态之间的差异

 类似资料:
  • 正如标题所描述的,我试图利用phinx进行数据库迁移,但我有一个自动增量列,它并没有用作主键。据我所知,菲尼克斯是做不到这一点的。 我意识到,我可能完全没有那个列,但它是巨大的遗留代码的一部分,至少目前,我没有时间重构整个应用程序,以确保该列不会在任何地方使用。如果我的结论是正确的,而phinx无法实现这一点,我希望有一些替代方案,拥有所描述的功能

  • 如何在Laravel迁移和存在表中添加列自动增量,但不是主键,它的主键是。我使用Laravel 5.7和pgsql。

  • 我正在尝试使用现有主键将自动递增id添加到现有表中 这是我的密码 表代码的初始迁移 将自动增量ID添加到现有表代码 我试图做的是向这个现有表添加一个自动递增的id,但它给了我这个错误 有人能帮帮我吗?我不想删除表的主键,我只想添加另一个自动递增的id,它不是主键,但可以是唯一键

  • 问题内容: 我正在尝试添加具有自动增量的主键。 我已经阅读了一些文档和其他问题-有和声明,但是不起作用。 这是我做的: 和 我怎么了 我只想将主键增加1。 问题答案: 是或多或少是一种列类型,所以说就像说,只是说: 如果您想自己创建序列,那么您想将序列中下一个值的默认值设为默认值,这意味着: 为了模拟通常的行为,您还需要使表拥有该序列: 阅读手册的“串行类型”部分可能会很有成果。 我还建议您不要对

  • 我想向包含数据的现有表中添加一个新的自动递增主列。我该怎么做? 我首先添加了一列,然后尝试添加一个序列,之后我就不知道如何插入该列并将其作为主键。

  • 我将向一个SQL Server表中添加一行,该表的主键列是自动递增的(< code>identity)。当我以编程方式向表中插入一个新行时,有没有办法获得所添加行的键值,因为我想在另一个相关表中将它用作外键?