【问题标题】:Migration in cakephp3cakephp3 中的迁移
【发布时间】:2015-10-09 07:10:26
【问题描述】:

我是 cakephp3 的新手。请参考 http://book.cakephp.org/3.0/en/migrations.html 并尝试使用终端创建数据库。例如:

bin/cake bake migration CreateProducts name:string description:text created modified

此命令创建文件,当使用以下命令时,它会在 phpmyadmin 中创建数据库表:

bin/cake migrations migrate

但是我想更新表并在其中添加一列..所以当我尝试更新数据库表时,它会创建另一个迁移文件..每次我想更新数据库表时..这些似乎很奇怪..因为我想更新单表.. 有什么办法,所以我每次通过迁移都更新具有相同功能的数据库表?

【问题讨论】:

    标签: mysql cakephp database-migration phinx


    【解决方案1】:

    当您使用迁移时,请参阅数据库中有一个表名phinxlog。在此表中有一个名为version 的字段名称。什么时候下达命令

    bin/cake migrations migrate
    

    然后这个表将被更新。现在查看版本字段,这里有一些数字,例如20150911090111。这个数字实际上是在您的迁移文件中添加的,对吗​​?

    如果此号码已在您的phinxlog 表中访问,则此文件将永远不会再次访问。这意味着在你的命令之后

     bin/cake migrations migrate
    

    该命令将不适用于已在pinixlog 表中访问过的文件。

    因此,如果已创建另一个迁移文件,请不要害怕。 如需添加新列,请参阅

    How to add a field in database table by cakephp migration?

    是的,也可以在旧迁移文件中添加新列,只需手动添加即可

    ->addColumn('field_name', 'types', [
                    'default' => null,
                    'limit' => 11,
                    'null' => false,
     ])
    

    然后重命名文件名。然后再给migration migrate。我希望它现在可以工作。

    【讨论】:

    • 好的..现在我的疑问已清除..感谢您的帮助..是否可以使用以下方法迁移所有数据以及列名:bin/cake bake migration_snapshot Initial ??
    • 是的,这是可能的。添加新列后,如果已添加所有列,则再次应用 bin/cake bake migration_snapshot Initial 命令。确保新的初始迁移文件位置在顶部。您可以通过重命名文件来完成。我想你知道20150911090111这个数字的含义。
    • bin/cake bake migration_snapshot 初始命令仅迁移数据库表及其列,但我还想迁移所有表行/数据...所以有可能吗??
    • 好的,我明白了,不,这是不可能的,但您可以制作自己的虚拟数据插入代码。看到这个链接stackoverflow.com/questions/30712896/…你必须手动添加。
    猜你喜欢
    • 2018-05-10
    • 2016-09-18
    • 2017-06-26
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2016-04-02
    • 2021-02-28
    • 2015-06-10
    相关资源
    最近更新 更多