sql >> Databasteknik >  >> RDS >> Mysql

Hur synkroniserar man två tabeller med olika MySQL-databaser på samma maskin?

För detta ändamål kan du använda transaktioner.

$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.";
}

Om en fråga misslyckas kommer den inte att tillåta den andra att köra och kommer att rulla tillbaka. Detta är bara exempelkod. Du kan använda uppdatering istället för infoga.



  1. orakel - vilka uttalanden måste göras?

  2. Ogiltig JSON-text i argument 2 - json_contains i MySQL 5.7.8

  3. Django skickar JSON-data till statisk getJSON/Javascript

  4. Varför frågan inte sparas i csv-fil medan det verkar normalt i postgresql-konsolen