sql >> Database >  >> RDS >> Mysql

Hoe synchroniseer ik twee tabellen met verschillende MySQL-databases op dezelfde machine?

Hiervoor kunt u transacties gebruiken.

$mysql_host                 = DB_HOST;
$mysql_username             = DB_USER;
$mysql_password             = DB_PASSWORD;
$mysql_database1            = DATABASE1;
$mysql_database2            = DATABASE2;

$mysqli = new mysqli($mysql_host, $mysql_username, $mysql_password) or die( mysql_error());

/*  Begin Transaction   */
$mysqli->autocommit(FALSE); 


/*  Insert data from db1 to db2 */
$query  =  "    INSERT INTO $mysql_database1.table1";

$a  =   $mysqli->query($query); 

$query  =  "    INSERT INTO $mysql_database1.table2
            SELECT 
                *
            FROM $mysql_database2.table2
            WHERE NOT EXISTS(SELECT * from $mysql_database1.table2)     
";
$d  =   $mysqli->query($query); 


if ($a and $b) 
{
    $mysqli->commit();      
    echo "Data synched successfully.";
} else {        

    $mysqli->rollback();        
    echo "Data failed to synch.";
}

Als een query mislukt, kan de andere niet worden uitgevoerd en wordt deze teruggedraaid. Dit is slechts een voorbeeldcode. U kunt update gebruiken in plaats van invoegen.



  1. Stel PDO in om standaard uitzonderingen te genereren

  2. Opgeslagen procedure uitvoeren in MySQL Workbench

  3. Door MySQL opgestelde verklaringen

  4. InnoDB dwingen buitenlandse sleutels op een tafel/tabellen opnieuw te controleren?