【问题标题】:CakePHP 3.x Database Migration Plugin: Is there a way to Change a table field?CakePHP 3.x 数据库迁移插件:有没有办法更改表字段?
【发布时间】:2016-02-24 17:45:03
【问题描述】:

我正在尝试找出如何最好地使用 CakePHP 迁移插件来修改 MySQL 表的现有列。我不需要添加或删除列,我只是想修改一个字符串列的长度。

目前该列定义为varchar(50);我正在重新利用该列并希望将其定义为varchar(2000)

迁移的目标是成为自动部署的一部分,该部署发生在典型 Web 服务器上的标准 CakePHP Web 应用程序安装上。

据我所知,使用迁移插件完成此任务的唯一方法(ALTER 声明除外)似乎是:

  1. 重命名列
  2. 添加新列
  3. 将现有数据移动/复制到新列
  4. 删除旧列

也许我错过了文档和无数教程中的讨论,以及如何找到更好的方法来实现这一点,但这似乎是一种麻烦和自我挫败的方法。

我已经通过了CakePHP Migration Plugin's documentationPhinx's documentation,但我没有看到针对此更改的推荐方法。感谢您对此的任何意见。

【问题讨论】:

    标签: php cakephp cakephp-3.0 database-migration phinx


    【解决方案1】:

    不幸的是,Phinx 文档并不完整,似乎有各种未记录的方法,例如您正在寻找的方法:\Phinx\Db\Table::changeColumn()

    以下应该可以工作

    $table = $this->table('table_name');
    $table->changeColumn('column_name', 'string', [
        'limit' => 2000
    ]);
    $table->update();
    

    【讨论】:

    • 这是完美的,感谢您的快速回复!这看起来正是我要找的!
    • 正是我所需要的,就像一个魅力!也感谢您提供资源链接,为我提供一些有用的信息来解决我遇到的一个不相关的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多