2

別のスクリプトと同期する必要があるスクリプトのSQLテーブルが2つあります。これは、1つの行を除いてphp cron(これは私の計画でした)を使用して実行できます。

表1表2

行1<---->行1

行2<---->行2

行3同期なし行3

同じサーバー上の両方のデータベースと同じユーザーが両方の完全な権限を持っている

私はcpanelcronを介してこれを行うためのphpコードを探しています

後から考えて、両方を新しいデータで更新するように2つをマージするのが最善でしょうか?

問題は、上記の例では、両方のデータベースで変更しないように行3が必要なことです。

私はとても初心者なので、よろしくお願いしますlolThx事前に

更新*

私はもう少しよく説明する方法を学ぶ必要があります。

両方のデータベースはサイトのコントロールパネルであり、テーブルの行の1つにはシステムURLが含まれているため、データベースを共有する場合、「サイト2」リンクは「サイト1」を参照します。これは私にとって非常に複雑な問題です。これは初めてです。

私が必要としているのは、両方のデータベースで異なる単一の行を除いて、両方のデータベースを最新の状態に保つことです。

どこから始めたらいいのかわからないので、まだ何も試していません:(笑

4

1 に答える 1

2

cronを使用する必要はありません。現在のバージョンのMySQLはとをサポートしTRIGGERSていEVENTSます。

TRIGGERを使用して、データを別のテーブルにコピーできます。そのコピー(またはその他の操作)は、何らかのイベント(テーブルの挿入、更新、削除など)によってトリガーされる場合があります。TRIGGER任意のクエリまたは任意のPL/SQLコードを実行できます。

他のオプションはEVENTです。これは、MySQLに組み込まれている内部タスクシェデュラーのようなものです。クエリや任意のPL/SQLコードを実行することもできますが、システム時間(Linux Cronなど)によってトリガーされます。cronと比較して多くの利点があります。

PL / SQLは手続き型SQLであり、ループや変数などがあります。

あなたが「初心者」だと思うなら、私はあなたのために治療法を持っています。MySQLに関する本を読んだり、怠け者の場合は、いくつかのチュートリアルをご覧ください( http://thenewboston.org、http ://phpacademy.org)。

ここの誰もあなたのためにコードを書くことはありません。バグを修正したり、アドバイスを提供したりすることしかできません:)

編集。

EVENTの例:

-- this is comment in SQL language (line starts with --)
CREATE EVENT event_daily_copy_something
    ON SCHEDULE
      EVERY 1 DAY
    COMMENT 'This text will appear in MySQL Workbench as description of event'
    DO
      BEGIN
        INSERT INTO your_db_name.target_table_name(id, field)
          SELECT id, something
            FROM your_db_name.source_table_name
            WHERE id = 3;
      END

テーブルの同期は非常に複雑です。万が一の場合、操作はほとんど必要ないと思います。

  1. 新しい行を確認してコピーします
  2. 削除された行を確認し、「コピー」テーブルで削除します
  3. 変更された行を確認します(トリガーは編集された行を「認識」しており、テーブル1の新しいフィールド値にアクセスし、それらを使用してテーブル2を更新できるため、ソーステーブルのトリガーは非常に便利です)。

MySQLチュートリアルの1つ-thenewboston@youtube。

于 2013-01-22T23:41:49.413 に答える