【问题标题】:ActiveRecord, Sinatra and Postgres - cant link to my dbActiveRecord、Sinatra 和 Postgres - 无法链接到我的数据库
【发布时间】:2015-07-06 12:54:58
【问题描述】:

我似乎无法让我的 Postgres 数据库使用活动记录链接到我的 Sinatra 应用程序。运行 db:migrate 时出现以下错误

ActiveRecord::NoDatabaseError: FATAL:  database "localhost/till" does not exist

我运行了 dbcreate mydb 并且没有问题,它确实存在。

我有一个配置文件夹和一个 environment.rb 文件

db = URI.parse(ENV['DATABASE_URL'] || 'postgres:///localhost/mydb')

ActiveRecord::Base.establish_connection(
  adapter: db.scheme == 'postgres' ? 'postgresql' : db.scheme,
  host: db.host,
  username: db.user,
  password: db.password,
  database: db.path[1..-1],
  encoding: 'utf8'
)

我在我的 app.rb 中引用了该文件,所以这不是问题所在。非常感谢任何帮助。

【问题讨论】:

  • 您在迁移之前是否运行过rake db:create
  • 是的。我删除了三个 /// 之一,现在我得到 Errno::ENOENT: No such file or directory @ rb_sysopen - db/schema.rb。我必须以某种方式生成架构吗?

标签: ruby postgresql sinatra sinatra-activerecord


【解决方案1】:

您有用于在数据库中创建表的迁移文件吗?当您迁移时,应该生成架构文件。要创建迁移文件,cd 到您的应用程序文件夹并输入终端命令 bundle exec rake db:create_migration NAME=my_migration_name。这将在您的 app 文件夹中创建一个 db 文件夹,其中将包含一个 migrate 文件夹。在migrate 文件夹中会有一个文件。这将如下所示:

class Migration < ActiveRecord::Migration
  def change
  end
end

change 函数中可以创建表。要创建表,请在change 函数中添加create_table 函数,如下所示。

class MyMigrationFile < ActiveRecord::Migration
  def change
    create_table :my_table_name do |i|
      i.string :my_column_name
      # string is the type of variable this column will store, you can change that if you want
    end
  end
end

然后实际创建您需要迁移的表。要迁移或实际创建表,请输入终端命令bundle exec rake db:migrate。这将生成您的架构文件。

【讨论】:

    猜你喜欢
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 2016-02-03
    • 2017-11-12
    • 2013-07-04
    • 2014-01-30
    相关资源
    最近更新 更多