cron を使用して、リモートの UNIX ボックスにある CKAN データベースのバックアップをスケジュールしました。以下のコードで簡単なスクリプトを実行します。
. /usr/lib/ckan/default/bin/activate
cd /usr/lib/ckan/default/src/ckan
paster db dump --config=/etc/ckan/default/production.ini /home/gisadmin/CKAN_backup_tmp.pg
手動で実行すると、スクリプトは常に成功します。ただし、cron ジョブが正常に実行される場合と、以下のエラー メッセージが表示されて失敗する場合があります。これをテストするために、ジョブを 1 時間ごとに実行するようにスケジュールしましたが、実際のパターンは確認できず、約半分の時間で成功しました。
Traceback (most recent call last):
File "/usr/lib/ckan/default/bin/paster", line 9, in <module>
load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')()
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 104, in run
invoke(command, command_name, options, args[1:])
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 143, in invoke
exit_code = runner.run(args)
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/paste/script/command.py", line 238, in run
result = self.command()
File "/usr/lib/ckan/default/src/ckan/ckan/lib/cli.py", line 141, in command
self._load_config()
File "/usr/lib/ckan/default/src/ckan/ckan/lib/cli.py", line 96, in _load_config
load_environment(conf.global_conf, conf.local_conf)
File "/usr/lib/ckan/default/src/ckan/ckan/config/environment.py", line 232, in load_environment
p.load_all(config)
File "/usr/lib/ckan/default/src/ckan/ckan/plugins/core.py", line 134, in load_all
load(*plugins)
File "/usr/lib/ckan/default/src/ckan/ckan/plugins/core.py", line 167, in load
plugins_update()
File "/usr/lib/ckan/default/src/ckan/ckan/plugins/core.py", line 116, in plugins_update
environment.update_config()
File "/usr/lib/ckan/default/src/ckan/ckan/config/environment.py", line 357, in update_config
plugin.configure(config)
File "/usr/lib/ckan/default/src/ckan/ckanext/datastore/plugin.py", line 77, in configure
self._check_urls_and_permissions()
File "/usr/lib/ckan/default/src/ckan/ckanext/datastore/plugin.py", line 121, in _check_urls_and_permissions
if not self._read_connection_has_correct_privileges():
File "/usr/lib/ckan/default/src/ckan/ckanext/datastore/plugin.py", line 164, in _read_connection_has_correct_privileges
write_connection.execute(u'CREATE TABLE _foo ()')
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1449, in execute
params)
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1628, in _execute_text
statement, parameters
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1698, in _execute_context
context)
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1691, in _execute_context
context)
File "/usr/lib/ckan/default/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 331, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (IntegrityError) duplicate key value violates unique constraint "pg_type_typname_nsp_index"
DETAIL: Key (typname, typnamespace)=(_foo, 2200) already exists.
'CREATE TABLE _foo ()' {}
どんな助けでも大歓迎です。
ありがとう。