【问题标题】:Phinx migration SQLSTATE[42S01]: Base table or view already exists:Phinx 迁移 SQLSTATE[42S01]:基表或视图已存在:
【发布时间】:2022-09-30 22:39:55
【问题描述】:

我想使用 Phinx 来管理我的数据库。我已经有一个带有表设置的数据库,所以我编写了迁移以反映已经存在的内容。从空数据库测试一切正常,但在填充的数据库上我得到SQLSTATE[42S01]: Base table or view already exists: 错误。

是否有命令或配置可以告诉 Phinx 填充 phinxlog 表,就好像之前已经运行过迁移一样?请注意 prod 中的表有数据,因此以任何方式删除表都不起作用。

  • mark_migrated 你在找什么?
  • @GregSchmidt 我正在使用独立的phinx,你提到的命令似乎是cakephp/migrations 的一部分,而不是robmorgan/phinx。

标签: php mysql cakephp phinx


【解决方案1】:

在您最初的向上迁移中,您可以检查表是否已经存在: https://book.cakephp.org/phinx/0/en/migrations.html#determining-whether-a-table-exists 只需将逻辑翻转到 if (!$exists)。 这假设现有表与您的迁移匹配,但听起来您已经检查过了,它应该填充 phinxlog 表。

如果您的任何新迁移包含新列而不仅仅是新表,您还可以使用https://book.cakephp.org/phinx/0/en/migrations.html#checking-whether-a-column-exists 检查列是否存在

【讨论】:

  • 是的,这确实有效,我必须为所有初始表迁移添加检查,但我没有看到更好的方法。
猜你喜欢
  • 2022-07-09
  • 2016-01-28
  • 2018-05-23
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 2016-05-10
  • 2022-11-14
  • 1970-01-01
相关资源
最近更新 更多