gpt4 book ai didi

ruby-on-rails - rake 数据库 :migrate doesn't generate table in postgresql

转载 作者:行者123 更新时间:2023-11-29 13:54:19 24 4
gpt4 key购买 nike

我遇到了一个似乎并不罕见的问题(过去 2 天我阅读了很多堆栈溢出页面),但我阅读的每个解决方案都不适合我。

我一直在关注这个 video tutorial6 点 42 分,导师显示了 postgresql 中的表,而我的表没有显示。

当我尝试 rake db:migrate 时,文件迁移没问题。 rake 不会抛出任何错误,相关的 .rb 文件是在模型文件夹中创建的,我的 schema.rb 看起来是正确的。似乎 postgresql 没有读取我的模式文件。

我的问题听起来与 rake db:migrate doesn't seem to work in production

但是输入 rake db:migrate RAILS_ENV=production 不起作用。 (在过去的几天里,我在 rake db:rollback STEP=3 等其他 rake 命令之后尝试了几次,因为我很偏执,这是解决方案,这个 person on ruby forum 具有相同的问题并提供相同的答案)。

这是我第一次尝试编程,我喜欢这个教程(而且这个问题的学习曲线已经证明)在这里问几乎是我最后的选择,因为我已经尝试了所有我能在网上理解的东西一个可能的解决方案所以请帮助我!提前致谢

最佳答案

这里有很多困惑:

迁移

Migrations are a convenient way to alter your database schema over time in a consistent and easy way. They use a Ruby DSL so that you don't have to write SQL by hand, allowing your schema and changes to be database independent.

Postgres 不会读取您的架构文件或迁移 - 而是迁移对您的数据库运行 SQL 查询。在这种情况下,将在运行迁移时运行 CREATE TABLE ... 查询。

迁移基本上是一种更易于维护和理智的方式来完成传统上通过打开数据库控制台和运行 SQL 查询来完成的操作。

config/schema.rb 实际上并没有被数据库或 ActiveRecord 使用 - 而是在您运行迁移时创建的,作为数据库模式应该是什么样子的快照。它只是开发人员的便利。 ActiveRecord 通过查询数据库架构来获取其映射。

迁移和生成器

迁移也不会创建模型文件 - 这些是生成器,例如:

rails g model Dude abides:boolean

这会在 app/models/dude.rb 中创建一个 CreateDudes 迁移和一个模型。

事实上,迁移只关心改变数据库模式,而不关心模型文件是否存在——在您查询数据库记录之前,模型不会被实际使用。

环境变量

RAILS_ENV=production 设置一个环境变量。

rake db:migrate RAILS_ENV=test

the documented way在不同的环境中运行迁移。一些晦涩的 shell 需要 ENV var 作为命令的前缀。

但是 - 如果您正在运行生产服务器,您应该永久设置 RAILS_ENV env var - 而不是在调用时!当有人期望您已正确配置服务器并在重新启动服务器时运行 rails s 时,这可以防止令人尴尬的错误。请参阅您的服务器操作系统的文档,了解如何设置环境变量。

如果您仍在运行迁移并且没有看到预期的结果,您很可能没有正确配置 config/database.yml - 迁移正在运行。但不是针对您所期望的数据库。

关于ruby-on-rails - rake 数据库 :migrate doesn't generate table in postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35129255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com