Próbuję użyć PHP i MySQL's Utwórz tabelę Wybierz między dwoma różnymi serwerami MySQL. Nie jestem pewien, czy można to zrobić za pomocą SQL. Otrzymuję żadnych błędów, ale nic nie mogę zrobić albo:Czy mogę używać MySql Create Select na dwóch różnych serwerach z PHP?
<?php
$dbname = 'cms';
$dbmaster = 'cmsms';
$db1 = mysql_connect('localhost', 'root', 'secret');
if (!$db1) {
echo 'Could not connect to mysql';
exit;
}
$db2 = mysql_connect('server2', 'root', 'secret');
if (!$db2) {
echo 'Could not connect to mysql';
exit;
}
mysql_select_db("$dbname", $db1) or die ("Unable to select database");
mysql_select_db("$dbmaster", $db2) or die ("Unable to select database");
$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql, $db1);
if (!$result) {
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
while ($row = mysql_fetch_row($result)) {
$sql = "DROP TABLE `$row[0]`";
mysql_query($sql, $db1);
echo "Table rows: {$row[0]} Deleted <br/>";
$sql = "CREATE TABLE $row[0] SELECT * FROM $db2.$dbmaster.$row[0] ";
mysql_query($sql, $db1);
echo "Table: {$row[0]} created <br/>";
}
echo "<br/>done...";
mysql_free_result($result);
?>
To linia:
$sql = "CREATE TABLE $row[0] SELECT * FROM $db2.$dbmaster.$row[0] ";
po prostu nie działa. $ db2 nie powoduje przejścia do innego serwera i wybrania.
Od przeczytania tekstu na stronie Znalazłem kogoś podobnego i ktoś powiedział, że nie da się tego zrobić i spojrzeć na tabele federacyjne, które nie będą działać dla mnie.
Jeśli nie można tego zrobić powyżej, czy ktoś wie, jak zrobić to, co robię? Usuwam tabele z kopii i ponownie je tworzę na podstawie tabeli w master. Następnie wybieram dane w urządzeniu master, aby wstawić ponownie utworzone tabele. Dziękujemy
Aktualizacja: Po prostu mogę być jasne. Kod działa, jeśli wszystko było na tym samym serwerze i miałem tylko jedno połączenie z bazą danych. To z powodu utworzyć tabelę wybierz, że mam problemy, Wierzę,. Ten SQL musi używać dwóch serwerów w tym samym czasie. Stworzona tabela jest dla jednej bazy danych, która po prostu upuściła tabele, ale wybór wybiera z bazy danych drugiego połączenia - dwa połączenia w tej samej instrukcji SQL.
@phill Chciałbym, gdybym otrzymał odpowiedzi, które byłyby właściwe. Próbuję wrócić i przejrzeć je, ale wiele razy są po prostu złe lub nie testowałem ich. – johnny
Wystarczy rzucić okiem na niektóre ze starszych pytań, na które, jak sądzę, odpowiedziano, z wieloma rozwiązaniami. Zauważ, że patrzyłem tylko na pytania PHP, ale jest więcej niż jedna odpowiedź na większość twoich pytań z akceptowalnymi rozwiązaniami. –
@phill to nie jest moje doświadczenie, ale jestem szczęśliwy, aby je sprawdzić, jeśli dają właściwą odpowiedź. Nie mam zamiaru nikogo trzymać i docenić wszystkie odpowiedzi. – johnny