När jag sedan ska köra en fråga mot "db1" kör jag:
$result = mysql_query("SELECT foo FROM table", $mysql1);
Då får jag:
db2.table doesn't exist
Hur kan det komma sig?
Jag anger ju till vilken identifier frågan ska ställas till, men ändå blandas dom ihop.
Kör Apache / MySQL på Vista Ultimate om det gör något skillnad.
Några förslag på hur jag löser det här?
Har testat att helt strunta i att öppna anslutningen för $mysql2 och då fungerar allt som det ska.
Problemet är att jag måste ha båda öppna samtidigt för att migreringen ska genomföras.
Har kört samma script förut på min Linuxserver med Debian och det har inte varit några problem. Enda skillnaden då var att jag anslöt mot två olika DBMS, den här gången är det samma databasserver (localhost) fast två olika databaser.
Verkar funkar om jag i frågan anger ...FROM db1.table...
Innebär det att jag inte behöver öppna två separata anslutningar? Hur är det prestandamässigt?
Jag ska nämligen migrera ~100.000 poster (uppåt 45MB) så allt jag kan göra för att förbättra prestandan är bra.
Du behöver titta på flaggan new_link i mysql_connect.
If a second call is made to mysql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. The new_link parameter modifies this behavior and makes mysql_connect() always open a new link, even if mysql_connect() was called before with the same parameters. In SQL safe mode, this parameter is ignored.
Det går alldeles utmärkt att skriva db1.table och db2.table och använda endast en anslutning, borde inte påverka prestandan åt något håll. Du kanske gör åt marginellt mindre minne.
100.000 rader är ju ingenting, eventuella optimeringar du gör kommer kanske skala nån sekund på den totala exekveringen. Se bara till att unset:a variabler eller öka memory_limit så du inte får slut på minne.
Hämtar du ut alla poster direkt och gör bearbetningen sen? Eller gör du bearbetningen för varje post för sig, i t.ex. en while($row = mysql_fetch_assoc($result))? Skulle absolut rekommendera det senare vad gäller minneskrav.
Föreslår att du splittar upp inserten. Du kan utan större problem köra insert varje vända, vid en engångskörning spelar en något längre exekveringstid inte så stor roll. Annars kan du ju köra insert med fasta intervall, typ var hundrade eller tusende rad.
250 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849