ActiveRecord,Sinatra和Postgres - 无法链接到我的数据库

时间:2015-04-27 21:39:27

标签: ruby postgresql sinatra sinatra-activerecord

我似乎无法使用Active记录将我的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中引用该文件,这不是问题所在。感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您是否有用于在数据库中创建表的迁移文件?迁移时应该生成模式文件。要创建迁移文件cd到您的app文件夹,然后输入终端命令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。这将生成您的架构文件。