Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails pg数据库:架构迁移为空_Ruby On Rails_Postgresql - Fatal编程技术网

Ruby on rails Rails pg数据库:架构迁移为空

Ruby on rails Rails pg数据库:架构迁移为空,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我正试图将一个新版本的项目部署到我的登台服务器上,但数据库中的schema_migrations表却莫名其妙地为空 它现在正在尝试在部署时运行所有迁移,这会导致问题,因为其他表都存在并且完好无损 与其删除/重新创建数据库并丢失所有数据(虽然不方便,但这是一个有效的选项),是否可以在不删除的情况下生成schema_migrations表?两点: 删除不再需要的迁移没有什么错,你不应该永远保留它们 如果必须,您可以手动更新schema_migrations表 就(1)而言,我删除了超过一个月的迁移(

我正试图将一个新版本的项目部署到我的登台服务器上,但数据库中的schema_migrations表却莫名其妙地为空

它现在正在尝试在部署时运行所有迁移,这会导致问题,因为其他表都存在并且完好无损

与其删除/重新创建数据库并丢失所有数据(虽然不方便,但这是一个有效的选项),是否可以在不删除的情况下生成schema_migrations表?

两点:

  • 删除不再需要的迁移没有什么错,你不应该永远保留它们

  • 如果必须,您可以手动更新
    schema_migrations

  • (1)而言,我删除了超过一个月的迁移(只要它们在任何地方都应用过)。在
    db/migrate
    中保留多年的混乱是毫无意义的。向下迁移然后再备份往往是一团糟,除了最近的迁移之外,所有迁移都不值得这么做;如果您需要测试旧的东西,请转储当前的开发数据库,并根据旧的
    schema.rb
    从新数据库开始。此外,如果您确实需要旧的迁移,那么您可以随时将其从版本控制中挖掘出来,或者根据
    db/schema.rb
    (或
    db/structure.sql
    )的不同版本重新创建它

    当然,如果您没有将
    db/schema.rb
    保留在修订控制中,那么您就做错了,这将是一场迫在眉睫的灾难

    对于(2)
    schema\u migrations
    表非常简单:

    create table schema_migrations (
      version varchar not null primary key
    )
    
    因此,您可以使用
    psql
    连接到PostgreSQL,手动创建表,然后在schema_migrations(version)值(…)中插入一组
    以覆盖本应在暂存环境中运行的历史迁移,然后像往常一样执行
    db:migrate
    以更新内容。然后,您可以花尽可能多的时间进行事后检查,以了解暂存数据库的
    schema\u迁移发生了什么

    如果您选择这条路线,如果您的Rails版本使用了
    ar\u internal\u metadata
    表,那么您可能需要查看它

    当然,在执行任何操作之前,您都将备份您的暂存数据库。您还需要检查生产数据库,以确保它没有遇到同样的问题


    有时候,你必须把手弄脏才能让事情顺利进行。

    有多少次迁移?您可以连接到数据库并手动添加它们。