Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Postgresql转储在导入数据时不会更正数据库_Ruby On Rails_Postgresql_Amazon Ec2 - Fatal编程技术网

Ruby on rails Postgresql转储在导入数据时不会更正数据库

Ruby on rails Postgresql转储在导入数据时不会更正数据库,ruby-on-rails,postgresql,amazon-ec2,Ruby On Rails,Postgresql,Amazon Ec2,我的目标是将.sql转储文件从我的服务器导入project_-devel数据库。我遇到了一个令人沮丧的问题,当我从.sql文件加载数据时,-d[databasename]选项似乎被忽略了。相反,(正如您在输出中看到的那样,.sql文件可能会告诉导入器导入到另一个数据库中。关于为什么会发生这种情况以及如何强制数据进入我用-d指定的数据库,有什么线索吗 最后,我通过将数据库中的开发数据库名称更改为MyStudioPROD来设置一个创可贴,因为我的目标是在本地加载生产数据并调试一些东西。p> 用于导入

我的目标是将.sql转储文件从我的服务器导入project_-devel数据库。我遇到了一个令人沮丧的问题,当我从.sql文件加载数据时,-d[databasename]选项似乎被忽略了。相反,(正如您在输出中看到的那样,.sql文件可能会告诉导入器导入到另一个数据库中。关于为什么会发生这种情况以及如何强制数据进入我用-d指定的数据库,有什么线索吗

最后,我通过将数据库中的开发数据库名称更改为MyStudioPROD来设置一个创可贴,因为我的目标是在本地加载生产数据并调试一些东西。p> 用于导入的命令:

YeastFlakes:newproject new$ psql -h /tmp -d project_devel -f prod_dump_2013-02-07_09-00.sql 
输出:

You are now connected to database "postgres" as user "new".
    SET
    SET
    SET
    psql:prod_dump_2013-02-07_09-00.sql:15: ERROR:  role "project" already exists
    ALTER ROLE
    psql:prod_dump_2013-02-07_09-00.sql:17: ERROR:  role "postgres" already exists
    ALTER ROLE
    psql:prod_dump_2013-02-07_09-00.sql:19: ERROR:  role "replication" already exists
    ALTER ROLE
    psql:prod_dump_2013-02-07_09-00.sql:31: ERROR:  database "project_prod" already exists
    REVOKE
    REVOKE
    GRANT
    GRANT
    You are now connected to database "project_prod" as user "new".
    SET
    SET
    SET
    SET
    SET
    SET
    CREATE EXTENSION
    COMMENT
    SET
    SET
    SET
    psql:prod_dump_2013-02-07_09-00.sql:85: ERROR:  relation "active_admin_comments" already exists
    ALTER TABLE
    psql:prod_dump_2013-02-07_09-00.sql:99: ERROR:  relation "active_admin_comments_id_seq" already exists
输出持续一段时间….

似乎采用了一种非常简单的SQL转储/恢复方法

Dump: 

$ pg_dump dbname > outfile

Restore:

$ psql dbname < infile
转储:
$pg_dump dbname>outfile
恢复:
$psql dbname
有没有不使用该方法的特殊原因?

似乎采用了一种非常简单的SQL转储/恢复方法

Dump: 

$ pg_dump dbname > outfile

Restore:

$ psql dbname < infile
转储:
$pg_dump dbname>outfile
恢复:
$psql dbname

有没有不使用该方法的特殊原因?

它在输出的顶部清楚地表明:

You are now connected to database "postgres" as user "new".
...
You are now connected to database "project_prod" as user "new".
如果您查看备份的前二十行左右,我想您不会看到任何类似于“连接”命令的内容吧?可能将数据库“postgresql”作为用户“new”,然后将另一个数据库“project_prod”再次作为用户“new”


哦,如果您不打算实际查看文件内部,那么作为原始SQL转储是没有意义的。还可以使用“自定义”格式,该格式经过压缩,并提供使用pg_restore恢复单个/选定元素的选项。有关详细信息,请参阅广泛而详细的手册。

它在输出的顶部非常清楚地指出:

You are now connected to database "postgres" as user "new".
...
You are now connected to database "project_prod" as user "new".
如果您查看备份的前二十行左右,我想您不会看到任何类似于“连接”命令的内容吧?可能将数据库“postgresql”作为用户“new”,然后将另一个数据库“project_prod”再次作为用户“new”


哦,如果您不打算实际查看文件内部,那么作为原始SQL转储是没有意义的。还可以使用“自定义”格式,该格式经过压缩,并提供使用pg_restore恢复单个/选定元素的选项。有关详细信息,请参阅广泛而详细的手册。

好的,因此在sql文件中,它显然有一些命令基本上可以实现它想要的功能,例如创建数据库、作为用户连接、调用它想要的功能。我是psql备份和恢复新手,所以我不确定我发出的命令为什么会被覆盖,但如果它们直接写入文件中,这是非常有意义的。感谢您提供的提示。好的,在sql文件中,它显然有一些命令基本上可以做它想做的事情,比如创建一个数据库,作为用户连接,调用它想做的事情。我是psql备份和恢复新手,所以我不确定我发出的命令为什么会被覆盖,但如果它们直接写入文件中,这是非常有意义的。谢谢你的提示,谢谢你的回答。我遇到了一个问题,psql会告诉我outfile不存在(当然它不存在,它是一个新文件),当我创建它然后尝试使用这些命令写入时,该文件实际上没有写入任何内容。以下是我要讨论的文档:一些我觉得最有用的链接,谢谢你的回答。我遇到了一个问题,psql会告诉我outfile不存在(当然它不存在,它是一个新文件),当我创建它然后尝试使用这些命令写入时,该文件实际上没有写入任何内容。这些是我要讨论的文档:一些我觉得最有用的链接,