web-dev-qa-db-ja.com

ダンプからPostGreSQL DBを復元するときの致命的なエラー:未定義の関数system_run_automated_cron

私は単にDrupal 7.8をPostGreSQL 9.1にインストールし、DBをバックアップしてから、そこから復元しようとしています...私のサイトのバックアップをテストするだけですが、サイトは戻らないで!

これが私のステップです:

  1. インストールDrupal&「完了」画面に設定を通過
  2. dBをダンプする(pg_dump> file.sql)
  3. dBをドロップする(dropdb)
  4. 同じ情報で新しいDBを作成する(createdb)
  5. dBを復元します(psql <file.sql)

その間に手順はありません(サイトをメンテナンスモードにしてキャッシュをクリアしてエラーを回避しようとした場合を除く)。コンテンツを追加する必要はありません。

しかし、自分のサイトにアクセスすると、次のエラーメッセージが表示されます。

[22-Nov-2011 17:07:44] PHP Notice:  unserialize() [<a href='function.unserialize'>function.unserialize</a>]: Error at offset 0 of 1009 bytes in /Applications/MAMP/htdocs/drupal-postgres/includes/cache.inc on line 405
[22-Nov-2011 17:07:44] PHP Notice:  unserialize() [<a href='function.unserialize'>function.unserialize</a>]: Error at offset 0 of 38585 bytes in /Applications/MAMP/htdocs/drupal-postgres/includes/cache.inc on line 405
[22-Nov-2011 17:07:44] PHP Warning:  Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/drupal-postgres/includes/module.inc on line 185
[22-Nov-2011 17:07:44] PHP Warning:  array_keys() expects parameter 1 to be array, null given in /Applications/MAMP/htdocs/drupal-postgres/includes/module.inc on line 89
[22-Nov-2011 17:07:44] PHP Notice:  unserialize() [<a href='function.unserialize'>function.unserialize</a>]: Error at offset 0 of 38585 bytes in /Applications/MAMP/htdocs/drupal-postgres/includes/cache.inc on line 405
[22-Nov-2011 17:07:44] PHP Warning:  Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/drupal-postgres/includes/module.inc on line 185
[22-Nov-2011 17:07:44] PHP Warning:  array_keys() expects parameter 1 to be array, null given in /Applications/MAMP/htdocs/drupal-postgres/includes/module.inc on line 89
[22-Nov-2011 17:07:44] PHP Fatal error:  Call to undefined function system_run_automated_cron() in /Applications/MAMP/htdocs/drupal-postgres/includes/common.inc on line 2573

誰もが何か考えを持っていますか?これは難しいことではありません!

どうもありがとう!

3
TizzyTool

これをたくさん調べた後、私はDBをMySQLに移動することを決定しました。私はそれをしなければならないのが嫌いでしたが、drushでのsql-dumpのサポートはMySQLに限定されており、バックアップと移行も同様です。 2台のDBサーバーを実行する必要があるために私を殺します(他のすべてのアプリケーションはPostGresを使用します)。

これらのモジュールがPostGresをサポートすることをいつか望みます。 Drupalは両方をサポートしているため、モジュールも同様です。

バックアップと移行および バックアップと移行ファイル を使用する際の注意事項

  • ファイルの所有権はファイルと一緒に移動するため、移動するファイルを「chown Apache」する必要がありました。
  • 一時ディレクトリの設定はマシン固有のフォルダとして保存されているようですので、宛先マシンでこれを更新してください
  • 宛先マシンのキャッシュをクリアします。これを行うまで、tpl.phpファイルが使用されない場合がありました。
2
TizzyTool

これを確認してください: http://drupal.org/node/926636

別のサーバーに移行したり、postgres 8.4から9.0にアップグレードしたりしても、ほぼ同じエラーが発生します。これまでのところ、byteaの設定を変更するだけで十分です。

1
gorilla_ch

ここでは暗闇で撮影しましたが、別の方法でバックアップを取ります。次の2つのオプションがあります。

1つは バックアップと移行 モジュールに対するものです。テーブルがロックされ、バックアップ中にメンテナンスモードに移行するようにプロファイルを設定して、整合性を確保します。また、キャッシュテーブルからすべてのコンテンツを除外します。その間に、バックアップスケジュールを設定します。

もう1つは drush を使用することで、これはsql-dumpコマンドです。 作成者は言及しています バックアップを確実にするために適切なオプションが使用されていること、およびテーブルの内容を除外することもできます。

バックアップファイルを復元して、手動でTRUNCATE TABLEまたはDELETE FROMすべてのキャッシュテーブル。

1
mpdonadio

バックアップを作成するたびにテーブルを変更する必要がないように、postgresql.confの設定を変更することもできます

bytea_output = 'escape'#hex、escape

1
Kristof