2016-07-07 13 views
1

別のホストの別のCKANインスタンスにCKANデータベースをロードしようとして失敗しました。CKANデータベースをダンプして別のCKANインスタンスにロードする

私のワークフローは以下の通りです:

A>本番ホストからDBのダンプを抽出(host_p)

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

B>私の新しいホストにダンプされたデータベースファイルをコピーします(host_t)

C> D>既存のCKAN databasをきれいに

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

CKAN仮想環境をアクティブにeでhost_tのインスタンスをロードする

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 

は、私は任意の助けをいただければ幸いですので、上記のエラーをどのように解釈するかを確認していません。

+1

実行中のCKANとPostgreSQLのバージョンは何ですか? –

+1

290行目の前にcli.pyの行にprint pg_cmdを入れて、それが何を伝えているかをお知らせください(PG_PASSWORDの値をXに変更してください)。そして、/etc/ckan/spatial_hub/development.iniファイルのsqlalchemy.urlにpostgresパスワードを設定していますか? –

+0

返信いただきありがとうございます。 CKANバージョン:2.5.2、PSQLバージョン9.5.3、sqlalchemy.urlが設定ファイルで正しく設定されています。 次が印刷されcli.pyにprint文を追加@DRead: 輸出PGPASSWORD = XXXXXX &&のpsql -U ckan_spatialhub -h localhostの-d ckan_spatialhub -f /home/username/ckan_db_dump.sql – Dimitris

答えて

4

パスワードに特殊文字が正しくエスケープされていないa known bugのように見えます。 paster db dumploadコマンドは、このような理由で廃止される予定です。公式の提案は、PostgreSQL独自のツール(pg_dumppg_restore)とpaster db upgrade(これは保持される)を組み合わせて使用​​することです。

短期的な回避策として、パスワードにシェルにとって特別な文字が含まれていないことを確認してください。

更新: CKANのドキュメントはhow to dump and load the CKAN database using pg_dump and pg_restoreの情報で更新されています。

+0

おかげフロリアン、 Iパスワードに特殊文字が含まれていることを確認できます。 'db dump'と 'db load'を廃止する予定の場合は、 'pg_dump'、 'pg_restore'と 'db upgrade'を追加します。 PSQLのワークフローを進める方法に関する有用な情報はありますか? ありがとうございました – Dimitris

+0

@Dimitris Glad私は助けることができました!この計画は、PostgreSQLツールを使用してDB移行を行う方法についての例でCKANのドキュメントを更新することですが、まだ実装されていません。 –

+0

こんにちは、 これは、CKAN dbユーザーパスワードを英数字に変更することで問題が解決されたことを確認するためのものです。データベースは、 'db dump'、 'db clean'、および 'db load'を使用して新しいホストに正常に転送されました。再度、感謝します。 – Dimitris