Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]3 serwery 4 bazy 1 skrypt
Forum PHP.pl > Forum > Przedszkole
Kużdo
Witam,

Mam dość poważny problem... Szukałem rozwiązania i znalazłem kilka tematów, ale jakoś nic nie działa nadal...

Otóż mam plik config.php z zawartością:
  1. $db1_host = "adres";
  2. $db1_user = "login";
  3. $db1_pass = "password";
  4. $db1_name = "baza";
  5.  
  6. $link1 = @mysql_connect($db1_host, $db1_user, $db1_pass)
  7. or die("Link1 - Access Denied.");
  8. $q1 = @mysql_query("SET NAMES 'utf8'", $link1);
  9. $q1 = @mysql_select_db($db1_name, $link1)
  10. or die("Link1 - Wrong MySQL database.");


Ten fragment powtarza się w tym pliku 4 razy z tym, że inaczej są numerowane... Potem są link2 i q2, link3 i q3, link4 i q4... Są trzy maszyny, na każdej jest baza. Na jednej z maszyn są dwie bazy i mam z nimi problem... Mam niby zapytania olinkowane, w skrypcie tak samo używam drugiego parametru $linkX za id połączenia, ale skrypt i tak pobiera sobie nie tą bazę co trzeba....

Przykładowo wygląda to tak:
  1. $link1 = 1.1.1.1:baza1;
  2. $link2 = 1.1.1.1:baza2;
  3. $link3 = 2.2.2.2:baza1;
  4. $link4 = 3.3.3.3:baza1;


Zapytania wyglądają tak:
  1. $query1 = ("SELECT `id`, `name` FROM `accounts` WHERE `id` = '".$id."'", $link1);
  2. $query2 = ("SELECT `id`, `ble` FROM `bleble` WHERE `id` = '".$id."'", $link2);
  3. ...

I wyskakuje mi błąd z zapytaniem $query1, bo nie może znaleźć tabeli accounts w bazie 'baza2'. Jak to pogodzić? :/

Jeśli komuś przeszkadza sposób w jaki to opisałem to sorki, chciałem to uprościć do maksimum, żeby nie zajmować miejsca...

Pozdrawiam.

//EDIT: Sprawdziłem coś i nawet w plikach gdzie nie używam $link2 skrypt wariuje bo bierze połączenie $link2 za $link1... Nie rozumiem już tego, bo są to osobne połączenia, osobno oznaczone. Przy wybieraniu bazy jest podany id połączenia czyli $q1 = @mysql_select_db($db1_name, $link1) i $q2 = @mysql_select_db($db2_name, $link2)...

Pomocy?

-------------------------------------
3 Wrzesień 2010 20:47
Sorry for double post...

Nikt nie zna odpowiedzi? Poproszę chociaż o jakieś wskazówki czy coś ;P Na razie to rozwiązałem poprzez wykonywanie zapytania mysql_select_db przed danym zapytaniem, ale jest to nie estetyczne i zajmuje miejsce, a na pewno jest inne wyjście... No i dlaczego linki się wiążą ze sobą? Przecież dla każdego jest nadany inny identyfikator, a przy mysql_select_db podaję drugi dodatkowy argument - ID połączenia...

Pozdrawiam.
thek
Rozwiązania są 2. Proste lub wymagające nieco wiedzy.

Proste? 4 parametr mysql_connect na true, co utworzy nowe połączenie dla tego samego serwera mysql

Wymagające nieco wiedzy? Serwer rozróżnia połączenia z hostem kanonicznym i IP. Dla niego połączenia na "localhost" i "127.0.0.1" to dwa różne winksmiley.jpg Jeśli znasz zarówno adres hosta jako IP i jako nazwę kanoniczną, to możesz utworzyć 2 różne połączenia dla niego.

Jaki z tego wniosek? Rozwiązanie proste jest nie tylko proste, ale i wygodniejsze w użyciu bo pozwala na ponad 2 połączenia dla jednego serwera bazy danych w banalny sposób smile.gif
Kużdo
I znów muszę Ci podziękować winksmiley.jpg

To jest naprawdę banalne rozwiązanie, dlaczego w innych tematach o tym nie pisali? haha.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.