转储 CKAN 数据库并将其加载到另一个 CKAN 实例中

Dump the CKAN database and Load it in another CKAN instance

我多次尝试将 CKAN 数据库加载到不同主机中的另一个 CKAN 实例,但均未成功。

我的工作流程如下:

A> 从生产主机中提取数据库转储 (host_p)

paster db dump -c /etc/ckan/ckan_p_instance/production.ini instance_p_db_dump.sql

B> 将转储的数据库文件复制到我的新主机 (host_t)

C>激活CKAN虚拟环境

. /usr/lib/ckan/ckan_t_instance/bin/activate

D> 清除 host_t

中现有的 CKAN 数据库
paster db clean -c /etc/ckan/spatial_hub/development.ini

E> 将转储文件加载到 CKAN host_t 实例中。

paster db load -c /etc/ckan/spatial_hub/development.ini ~/instance_p_db_dump.sql

F> 我收到以下错误:

/bin/sh: 1: Syntax error: "&&" unexpected
Traceback (most recent call last):
  File "/usr/lib/ckan/spatial_hub/bin/paster", line 11, in <module>
    sys.exit(run())
  File "/usr/lib/ckan/spatial_hub/local/lib/python2.7/site-packages/paste/script/command.py", line 102, in run
    invoke(command, command_name, options, args[1:])
  File "/usr/lib/ckan/spatial_hub/local/lib/python2.7/site-packages/paste/script/command.py", line 141, in invoke
    exit_code = runner.run(args)
  File "/usr/lib/ckan/spatial_hub/local/lib/python2.7/site-packages/paste/script/command.py", line 236, in run
    result = self.command()
  File "/usr/lib/ckan/spatial_hub/src/ckan/ckan/lib/cli.py", line 238, in command
    self.load()
  File "/usr/lib/ckan/spatial_hub/src/ckan/ckan/lib/cli.py", line 315, in load
    pg_cmd = self._postgres_load(dump_path)
  File "/usr/lib/ckan/spatial_hub/src/ckan/ckan/lib/cli.py", line 290, in _postgres_load
    self._run_cmd(pg_cmd)
  File "/usr/lib/ckan/spatial_hub/src/ckan/ckan/lib/cli.py", line 297, in _run_cmd
    raise SystemError('Command exited with errorcode: %i' % retcode)
SystemError: Command exited with errorcode: 2

我不确定如何解释上述错误,因此不胜感激。

您的 运行 看起来像是 a known bug, where special characters in the password are not properly escaped. The paster db dump and load commands are going to be deprecated for this and other reasons. The official suggestion is to use PostgreSQL's own tools (e.g. pg_dump and pg_restore) 与 paster db upgrade(将保留)结合使用。

作为短期解决方法,请确保您的密码不包含您 shell.

的特殊字符

更新: CKAN 文档已更新 how to dump and load the CKAN database using pg_dump and pg_restore