エラー "SQLSTATE: Column not found/Base table or view not found" で Plesk にアクセスできません

Created:

2016-11-16 12:59:58 UTC

Modified:

2017-08-17 15:00:31 UTC

0

Was this article helpful?


Have more questions?

リクエストを送信

エラー "SQLSTATE: Column not found/Base table or view not found" で Plesk にアクセスできません

Applicable to:

  • Plesk 10.x for Linux
  • Plesk 11.x for Linux
  • Plesk 12.0 for Linux

症状

アップグレード後に Plesk の読み込みが失敗します。ログインを試みると、以下のエラーが表示される場合があります。

    Unknown column ipAddress in where clause

または

    ERR (3)  [panel]: SQLSTATE[42S02]: Base table or view not found: 1146 
Table 'psa.table_name' doesn't exist

または

 SQLSTATE[42S22]: Column not found: 1054 Unknown column 'DomainId' in 'where clause'

ドメインまたは契約を開こうとすると、以下のエラーが表示される場合があります。

ERROR: Call to a member function capability() on a non-object (SubscriptionController.php:1144)

原因

一般に、アップグレードが失敗する原因には、パッケージの依存関係、アップグレード前のインストールの不整合、過去のアップグレードの失敗などがあります。

この記事では、アップグレードを再実行して、根本原因を排除する手順を説明します。ログファイルとアップグレードスクリプトからの出力を参考に、根本原因を特定します。

解決策

失敗したアップグレードを一番最初から始める手順は以下のとおりです。

  1. 現在のデータベースのスナップショットを作成します。これは部分的にアップグレードされており、不整合があるかもしれませんが、何か問題が発生したときに必要になる可能性があります。

    # MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysqldump -uadmin --quote-names --database psa > current.sql
  2. '/var/lib/psa/dumps/' ディレクトリで、 'psa' データベースの安定したアップグレード前ダンプを探します。

    # ls -l /var/lib/psa/dumps/mysql.preupgrade*
    -rw------- 1 root root 78771 Oct 11 16:56 /var/lib/psa/dumps/mysql.preupgrade.dump.gz
    -rw------- 1 root root 78452 Oct 11 16:32 /var/lib/psa/dumps/mysql.preupgrade.dump.gz.1
    -rw------- 1 root root 78320 Oct 11 16:07 /var/lib/psa/dumps/mysql.preupgrade.dump.gz.2
    -rw------- 1 root root 65351 Oct 7 02:09 /var/lib/psa/dumps/mysql.preupgrade.dump.gz.3
    -rw------- 1 root root 45632 Aug 3 12:39 /var/lib/psa/dumps/mysql.preupgrade.dump.gz.4
    -rw------- 1 root root 43245 Aug 3 00:19 /var/lib/psa/dumps/mysql.preupgrade.dump.gz.5
    -rw------- 1 root root 51235 Jun 12 12:19 /var/lib/psa/dumps/mysql.preupgrade.dump.gz.6

    通常、データベースの最も有効なスナップショットとは、現在の日付に近いダンプセットの中で最も古いダンプです(この例では '/var/lib/psa/dumps/mysql.preupgrade.dump.gz.2' です)。

  3. 以下のコマンドで、ダンプから 'psa' データベースを抽出します。

    3.1. バージョン 10.3 以上からアップグレードした場合は、 'psa' データベースと 'apsc' データベースの両方を復元する必要があります。

    # zcat /var/lib/psa/dumps/mysql.preupgrade.dump.gz.2 | sed -n '/^CREATE DATABASE.*psa/,/^CREATE DATABASE.*apsc/p' > preupgrade_psa.sql
    # zcat /var/lib/psa/dumps/apsc.preupgrade.dump.gz.2 > preupgrade_apsc.sql

    3.2. 10.3 より前のバージョンからアップグレードした場合は、 'psa' データベースのみが必要です。

     # zcat /var/lib/psa/dumps/mysql.preupgrade.dump.gz.2 | sed -n '/^CREATE DATABASE.*psa/,/^CREATE DATABASE.*horde/p' > preupgrade.sql
  4. 'psa' パッケージと 'plesk-core' パッケージのバージョンをチェックします。

    rpm -q plesk-core psa

    パッケージが既にアップグレードされている場合、 http://autoinstall.plesk.com/PSA_<old_plesk_version>/<os_version_build>/base/ からアップグレード前のバージョンをダウンロードして、強制的にインストールします。

    rpm -Uvh --force --nodeps <package_name>

    2 つの 'psa' RPM がインストールされた場合、以下のようにして新しい方を削除します。

    # rpm -e --nodeps --noscripts --justdb <package>
  5. ファイル '/usr/local/psa/version' '/usr/local/psa/core.version' を修正します。

    そこに古いバージョンを設定します。ビルドの数字は該当するブートストラッパパッケージからとられます。たとえば:Plesk パッケージ plesk-core-11.5.30-cos6.build115130819.13.x86_64.rpm psa-11.5.30-cos6.build115130819.13.x86_64.rpm をインストールする場合、 'version' ファイルには、 11.5.30 CentOS 6 115140407.17 (最新のブートストラッパパッケージ pp11.5.30-bootstrapper-11.5.30-cos6.build115140407.17.x86_64.rpm からとられたビルド番号)が含まれる必要があります。ファイル 'core-version' はコアパッケージのバージョンを保持する必要があります。

  6. 現在の 'psa' データベースと 'apsc' データベースをドロップし、アップグレード前のダンプを復元します。

    # echo "DROP DATABASE psa" | mysql -uadmin -p`cat /etc/psa/.psa.shadow`
    # cat preupgrade_psa.sql | mysql -uadmin -p`cat /etc/psa/.psa.shadow`
    # echo "DROP DATABASE apsc" | mysql -uadmin -p`cat /etc/psa/.psa.shadow`
    # cat preupgrade_apsc.sql | mysql -uadmin -p`cat /etc/psa/.psa.shadow`
  7. アップグレードが最初に失敗した原因となった問題を修正します。このプロセスについては本記事の範囲外ですが、/tmp のアップグレードログに有用な情報があります。

  8. アップグレードを試みたバージョンの 'psa' パッケージと 'plesk-core' パッケージをダウンロードして、 'rpm -Uvh --force' でインストールします。このアクションにより、データベースのアップグレードが開始されます。失敗する場合、失敗原因を修正して、前の手順まですべてをロールバックして、この手順をやり直します。

  9. 'bootstrapper' ユーティリティを実行します。

    /usr/local/psa/bootstrapper/pp12.0.18-bootstrapper/bootstrapper.sh --prep-install
    /usr/local/psa/bootstrapper/pp12.0.18-bootstrapper/bootstrapper.sh --rerun
  10. ウェブサービス、メールサービス、DNS サービスの構成ファイルを復元するには、以下のコマンドを実行します。

    plesk bin repair --run
  11. 以下のコマンドを実行します。

    /usr/local/psa/admin/bin/autoinstaller --select-release-current --upgrade-installed-components
他にご質問がございましたら、リクエストを送信してください
ログインしてコメントを残してください。