サポート » マルチサイト » マルチサイトの設定時に、データベースの復元エラーとなる。

  • マルチサイトの設定を行った後に、データベースのチェックと復元を要求され、
    実行すると、以下のテーブルがないと言われてしまう。

    wp_1_posts: Table ‘wordpress_db.wp_1_posts’ doesn’t exist
    wp_1_comments: Table ‘wordpress_db.wp_1_comments’ doesn’t exist
    wp_1_links: Table ‘wordpress_db.wp_1_links’ doesn’t exist
    wp_1_options: Table ‘wordpress_db.wp_1_options’ doesn’t exist
    wp_1_postmeta: Table ‘wordpress_db.wp_1_postmeta’ doesn’t exist
    wp_1_terms: Table ‘wordpress_db.wp_1_terms’ doesn’t exist
    wp_1_term_taxonomy: Table ‘wordpress_db.wp_1_term_taxonomy’ doesn’t exist
    wp_1_term_relationships: Table ‘wordpress_db.wp_1_term_relationships’ doesn’t exist
    wp_1_commentmeta: Table ‘wordpress_db.wp_1_commentmeta’ doesn’t exist

    そのあとは、どのメニューを押しても、データベースの復元要求のページに遷移してしまいます。

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • マニュアルの手順のどこまで行ったらそうなったのかを書きましょう。
    http://wpdocs.sourceforge.jp/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E4%BD%9C%E6%88%90

    後、サーバーによってはマルチサイトが利用できない可能性があります。
    wordpressマルチサイト運用が可能かどうか、また特別な設定が必要かどうか、必ずサーバー会社のサポートに確認しておいてください。

    トピック投稿者 ashibuya

    (@ashibuya)

    失礼しました。
    サーバについては、社内にあるCentOSで構築しています。
    外部に公開はしていないのですが、社内ではみることができます。

    マニュアルは「手順5: ネットワークの有効化」まできて、
    ログインしなおした場合、「エラー: データベースに接続できません」となってしまいます。

    ログインしなおさずに、他のメニューを押した場合に「データベースの復元」を要求されてしまいました。

    そこで、「wp-config.php」のマルチサイトの設定の以下をコメントアウトすると

    define( 'SUBDOMAIN_INSTALL', false );
    $base = '/';
    define( 'DOMAIN_CURRENT_SITE', 'XXXXXXXXXXXXXXXXX' );
    define( 'PATH_CURRENT_SITE', '/' );
    define( 'SITE_ID_CURRENT_SITE', 1 );
    define( 'BLOG_ID_CURRENT_SITE', 1 );

    再度ログインできるようになりました。

    「WordPressの設定による制約」については確認して、
    ネットワーク設定が可能であることは確認はしているのですが、
    再度、インストールしなおしても、同じ現象がおきてしまいます。

    データベースのテーブル構造はどうなっていますか?
    上記のテーブルが無いと言われるなら、バックアップを取った上で試しに自分で作ってみたらどうなるでしょう?

    マルチサイト化の手順に間違いがないなら原因はサーバ側にあると思われますので、ある程度症状を検証した上でサーバを管理している方に相談なさると良いと思います。

    データベースのテーブル作成(変更)のところで失敗してるっぽいですね。

    ユーザーにデータベースのテーブル作成権限が無いのかもしれません。
    データベースのユーザーの権限を確認してみたほうが良いと思います。

    Heihachiroさんのアドバイスのように、直接データベースにアクセスしてみると、問題の切り分けができるかもしれません。

    トピック投稿者 ashibuya

    (@ashibuya)

    ありがとうございます。
    テーブルが無いといわれたので、
    無いと指摘されたテーブルをすべて作成してみました。
    (create table文はすべて、元の定義をもとに作成)
    | wp_1_commentmeta |
    | wp_1_comments |
    | wp_1_links |
    | wp_1_options |
    | wp_1_postmeta |
    | wp_1_posts |
    | wp_1_term_relationships |
    | wp_1_term_taxonomy |
    | wp_1_terms

    そうすると、復元は完了しましたメッセージが表示されたのですが

    ログイン画面にいくと「エラー: データベースに接続できません」のメッセージが表示されて、そこで止まってしまいます。
    データベースのユーザーに対して、権限は「all」で付与しました。

    デバックしたところ「 vim wp-includes/load.php」の「1850」で

    // Die with a DB error.
    dead_db

    に行ってる気がします。まだ原因はよくわからないのですが。。

    トピック投稿者 ashibuya

    (@ashibuya)

    この処置でよかったかどうか不明なのですが
    「 vim wp-includes/load.php」の「1850」あたりで、
    以下のようになっていたので

    // If visiting repair.php, return true and let it take over.
                if ( defined('WP_REPAIRING') )
                    return true;
                // Die with a DB error.
                $wpdb->error = sprintf( /*WP_I18N_NO_TABLES*/'利用できないデータベーステーブルがあります。データベースの<a href="%s">復元</a>が必要かもしれません。'/*/WP_I18N_NO_TABLES*/, 'maint/repair.php?referrer=is_blog_installed' );
                dead_db();

    とりあえず、「wp-config」で以下の定義を追加したところ。画面が表示され、
    特権管理者が使用できるようになりました。。。
    この設定が必要だとは書かれていないようなのですが。。

    define('WP_REPAIRING', true);

    解決方法とかではなく単純な疑問なのですが、個人的には wp_1 というテーブル接頭辞が気になっています。これは ashibuya さんがつけたものですか?

    通常デフォルト接頭辞である wp_ をつけた場合、マルチサイトのサブサイトの接頭辞は wp_2 からとなり wp_1 というテーブル接頭辞が作られる事はありません。だとしたらどうして本来ないはずのテーブルを見に行っているのかが気になります。主サイトのIDが 1 だとしても wp_ を見に行くはずです。

    wp_blogs や wp_site あたりのデータがどうなってるのかも気になりますね。この辺シングルサイトでは問題なくアクセスできるのに、マルチサイトだとデータベースエラーが起きる原因になりえるかも知れません。

    トピック投稿者 ashibuya

    (@ashibuya)

    Heihachiroさん

    「wp_1 」という接頭辞は私がつけたものではないです。
    Wordpressを初期状態からインストールして、すぐにマルチサイトの設定手順に
    うつったので、特にそのほかのことはしていません。

    define('WP_REPAIRING', true);

    の対応をした後にサイトが複数つくることができ、
    その際は「2、3」とテーブルが増えていっています。

    ただ、やはり上記の対応は正式ではないようで、
    ユーザー登録のところで、権限選択のドロップダウンになにも表示されず、
    新しく作成したユーザーは特権管理者にしない限り、admin画面が見れず投稿もできないという状況です。。

    ただ、やはり上記の対応は正式ではないようで、

    ええ、私もちゃんとデータベースエラーがでる原因を探った方が良いと思います。

    「wp_1 」という接頭辞は私がつけたものではないです。

    いまの所ここが怪しいですね。なぜ本来存在しないはずの(現在は手動で作成した後ですが)テーブルを見に行ってるのでしょうかね。

    私がデータベースを直接見られれば良いのですが、どうアドバイスしたものやら。実際に動いているマルチサイトのデータと比較すればどこがおかしいのか解りそうな気がします。データベースのユーザー権限を与えたのがどのタイミングかわかりませんので、もう一度初めからマルチサイトを構築したらどうなりますかね?

    WordPress MU だと、「wp_1」が作成される仕様だったのですが、
    現状の WordPress3.0 インストール -> マルチブログ化だと、
    「wp_1」は作成されないようです。

    サブブログは、「wp_2」のように数字付きのテーブルになります。

    wp_1 を探しにいくのは、本体のバグの可能性がありそうですね。
    私の環境で wp_1 を探しにいったケースはまだ無いので、直接確認できていませんけど。

    この問題、解決しましたでしょうか?

    wp-config.php に、以下の記述を追記し忘れているのではないでしょうか?

    define( 'MULTISITE', true );

    これが追記されていないと wpdb::get_blog_prefix() で、テーブルプリフィックスに「1_」が強制的に付けられちゃいます。
    一応、下記で簡単に解説しておきました。
    http://wokamoto.wordpress.com/2011/08/24/wordpress-multi/

11件の返信を表示中 - 1 - 11件目 (全11件中)
  • トピック「マルチサイトの設定時に、データベースの復元エラーとなる。」には新たに返信することはできません。