我有一个应用程序,我正在迁移到Deis,并希望将RDS用于我的Postgres实例。我设置了Postgres,但如果我从本地计算机运行rake db:create:all
,配置为指向RDS,我得到:
This task only modifies local databases. <db_name> is on a remote host.
有没有办法从现有迁移或schema.rb文件创建数据库?
更新1
这是database.yml
文件。所有环境都继承默认
default: &default
adapter: postgresql
encoding: utf8
pool: 5
username: <db user I created>
password: <PW>
host: <my_unique_host>.us-east-1.rds.amazonaws.com
port: 5432
更新2
对于仅仅创建数据库然后像正常一样运行db:migrate
的评论,这正是我没有看到的行为。如果我将数据库激活并运行rake db:migrate
,则该过程完成,我将看到一个新的终端线。没有创建表/列。
我最好尝试进行本地数据库转储并将其恢复到RDS中吗?
更新3:解决方案 我已经解决了这个问题并想分享我的经验:
rake db:migrate
命令无效。这可能是可能的,但我无法弄明白。rake db:create
和rake db:migrate
。这个回复说这个表已经创建了,我能够在psql提示符下验证。希望这有帮助。
答案 0 :(得分:2)
你必须手动完成rake db:create:all [1]完成的部分,所以连接到DBMS并通过运行命令创建db
private static string GetIdentifierName(IMethodSymbol within)
{
var proposed = "x";
while (within.Parameters.Any(x => x.Name == proposed))
{
proposed = "_" + proposed;
}
return proposed;
}
迁移可以通过CREATE DATABASE db_name CHARACTER SET utf8;
答案 1 :(得分:2)
更新3:解决方案我已经解决了这个问题并想分享我的经验:
希望这有帮助。
答案 2 :(得分:0)
ActiveRecord::Tasks::DatabaseTasks::LOCAL_HOSTS << "192.168.1.1" # Replace with the IP you want to connect from
请记住,这是肮脏的hack,因为它会更改实际上具有更好私有性的常量,因此它可能随时停止运行。