我在不同服务器上的数据库上进行备份,并且具有与我需要的不同的角色,使用以下命令:
pg_dump -Fc db_name -f db_name.dump
Run Code Online (Sandbox Code Playgroud)
然后我将备份复制到我需要还原数据库的另一台服务器,但是没有这样的所有者用于该数据库.假设数据库拥有所有者owner1,但在不同的服务器上我只有owner2,我需要恢复该数据库并更改所有者.
我在恢复时在另一台服务器上做了什么:
createdb -p 5433 -T template0 db_name
pg_restore -p 5433 --role=owner2 -d db_name db_name.dump
Run Code Online (Sandbox Code Playgroud)
但是当运行恢复时,我会收到以下错误:
pg_restore: [archiver (db)] could not execute query: ERROR: role "owner1" does not exist
Run Code Online (Sandbox Code Playgroud)
如何指定它以便更改所有者?还是不可能?
我有一个Rails 4应用程序,我与它一起使用sidekiq来运行异步作业.我通常在我的Rails应用程序之外运行的一个作业是一大堆复杂的SQL查询,它们无法真正由ActiveRecord建模.这组SQL查询与我的Rails应用程序的连接是,它应该在我的一个控制器操作被调用时执行.
理想情况下,我会从控制器中的Rails应用程序中为Sidekiq排队,继续运行查询.现在它们存储在一个外部文件中,我不完全确定Rails运行所述SQL的最佳方法是什么.
任何解决方案都很受欢
我有一个非常庞大的(> 8mo)sql文件,基本上创建了2个表并用数据填充它们.这是Sequel Pro生成的转储.我的第一个想法是逐行读取文件并运行"执行"命令,但我有一个错误,我的字符串太大了.
Mysql2 ::错误:有一个大于'max_allowed_packet'字节的数据包
有没有办法直接运行SQL文件而不是读取它并尝试执行?
仅供参考我可以将这个文件分成2个部分分别用于2个表格,但是我之后会有另一个更大的文件并且不能被分割.
我正在使用Rails 3.0.3与ActiveRecord和MySQL数据库.