0

以下のクエリを実行すると、何らかの理由で次のエラーが発生します。

SQL 構文にエラーがあります。35 行目の 'ENGINE=FEDERATED' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

CREATE TABLE users AS (
  SELECT
    ID, user_email, user_registered,
    first_name.meta_value as first_name,
    last_name.meta_value as last_name,
    telephone.meta_value as telephone,
    country.meta_value as country,
    company.meta_value as company,
    address.meta_value as address,
    city.meta_value as city,
    professional_title.meta_value as professional_title,
    state.meta_value as state,
    areas_of_interest.meta_value as areas_of_interest
    FROM wp_users
    LEFT JOIN wp_usermeta AS first_name ON first_name.user_id=ID
        AND first_name.meta_key='first_name'
    LEFT JOIN wp_usermeta AS last_name ON last_name.user_id=ID
        AND last_name.meta_key='last_name'
    LEFT JOIN wp_usermeta AS telephone ON telephone.user_id=ID
        AND telephone.meta_key='telephone'
    LEFT JOIN wp_usermeta AS country ON country.user_id=ID
        AND country.meta_key='country'
    LEFT JOIN wp_usermeta AS company ON company.user_id=ID
        AND company.meta_key='company'
    LEFT JOIN wp_usermeta AS address ON address.user_id=ID
        AND address.meta_key='address'
    LEFT JOIN wp_usermeta AS city ON city.user_id=ID
        AND city.meta_key='city'
    LEFT JOIN wp_usermeta AS professional_title ON professional_title.user_id=ID
        AND professional_title.meta_key='professional_title'
    LEFT JOIN wp_usermeta AS state ON state.user_id=ID
        AND state.meta_key='state'
    LEFT JOIN wp_usermeta AS areas_of_interest ON areas_of_interest.user_id=ID
        AND areas_of_interest.meta_key='areas_of_interest'
) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION "*****";

注: FEDERATED エンジンはオンで、結合されていない他のテーブルで動作しています。

4

1 に答える 1

0

簡単な答え:
FEDERATED テーブルの CREATE ステートメントには、CONNECTION と呼ばれる追加のデータが必要です。ステートメントにそのデータがないことが、構文エラーの原因です。

長い答え:

この特定のインスタンスでは、VIEW は FEDERATED テーブルよりも優れたツールです。

FEDERATED ストレージ エンジンは、Linux のシンボリック リンクや Windows のショートカットのようなものです。これは主に、実際にはテーブルをローカルに保存していないサーバー上のテーブルにアクセスするために使用されますが、別の mysql サーバー上にあります。そのため、FEDERATED テーブルを作成するときは、FEDERATED ストレージ エンジンが使用する CONNECTION も CREATE ステートメントに含める必要があります。データが保存されているのと同じホスト上に FEDERATED テーブルを作成することを選択できますが、ローカル データにアクセスするために実行される不要な手順により、追加のオーバーヘッドが発生します。詳しくはこちらのリンクをご覧ください。

一方、VIEW は、VIEW テーブルにクエリを実行するたびに実行されるストアド クエリのようなものです。 このページでは、それに関する詳細情報を提供できます。

于 2014-11-14T14:29:49.853 に答える