我似乎无法使用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中引用该文件,这不是问题所在。感谢任何帮助。
答案 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
。这将生成您的架构文件。