PHP vai MySQL nedokumentētā fīča?

25. oktobris, 2007 – 23:57, 169 skatījumi

Vakar sanāca cīnīties ar vienu MySQL importu/exportu.

Stāsts tāds: Ir viena konekcija pie vienas datu bāzes un ir otra konekcija pie otras datu bāzes. Tiek veikti SELECT, INSERT, UPDATE.. It kā triviāls uzdevums, kā “ap*urāt 2vus pirkstus”

Kaut kā nesanāk.. Skatos, kādi kļūdu paziņojumi.. Hmz.. It kā nevar atrast tabulu.. Bet tak konekcijas tiek norādītas. Mocījos un pārrakstīju visu kādu stundu.. Tā un tā.. Beigās izdomāju, ka varbūt vajaga vienai konekcijai nomainīt lietotājvārdu ar kuru slēgties pie datu bāzes. Nomainīju un uzreiz viss aizgāja..

Tagad nevaru saprast tā kāda “nedokomentēta fīča” [bug]  vai arī tā tam ir jābūt?

  1. 8 komentāri rakstam “PHP vai MySQL nedokumentētā fīča?”

  2. kaut ko liidziigu esmu dariijis no localhosta (A) un tuvaakaa turpat blakaam esosha serveriisha (B)… divas konekcijas … kverijaa noraadiit kuru konekciju lietot … tjipa iizii un straadaa … … meerkjis bija no viena taa servaka (B) samainiities ar cita servaka (C) datiem … … vot tur saakaas probleema … ka vienkaarshi tas (C) negribēja ljaut man caur (B) piesleegties klaat un izveidot konekciju.
    ideja jau taada:

    Komentēja iivs, tieši 26.10.2007 09:47:26

  3. damn … tev te php tagus nesaprata vai kaa?

    eniivei gribeeju veel tik pateikt ko taadu:

    set_time_limit(0);

    define (”_DB1″, “kautkaada_db1″);
    define (”_DB2″, “kautkaada_db2″);

    define (”A”, mysql_connect ($serv_a, $user_a, $pass_a));
    define (”B”, mysql_connect ($serv_b , $user_b, $pass_b));

    mysql_select_db (_DB1, A);
    mysql_select_db (_DB2, B);

    mysql_query(”set names utf8″, A);
    mysql_query(”set charset set utf8″, A);

    mysql_query(”set names utf8″, B);
    mysql_query(”set charset set utf8″, B);

    $sql = “piemeeram kaut kaads selects”;
    $res = mysql_query($sql, B);
    if ($res)
    {
    $row = mysql_fetch_array($res);
    mysql_query(”kaut ko dariisim ar otru”, A);
    }

    Komentēja iivs, tieši 26.10.2007 09:48:39

  4. Tak zinu ka tā ir :)

    Bet paprovē triku, ja tev ir viens serveris, viens useris, viena parole, 2vas konekcijas, 2 tabulas.

    Komentēja marcis, tieši 26.10.2007 11:39:29

  5. Visjaukākais, kad testa vidē izmanto vienu SQL serveri, ar vienu un to pašu username un pass, taču pārnesot uz production vidi atceries, ka vajadzēja taisīt priekš 2 SQL serveriem ar dažādiem username un pass. Šādi man vienreiz sanāca, ka es izveidoju kveriju ar cross-database join`u. ;-D Labojot to kļūdu es testa vidē nonācu līdz tavam modelim - 1 DB serveris ar vienu un to pašu useri, tik man bija divas dažādas DB. No tava apraksta man nav ne mazākās nojausmas, kā tu ko tādu nestrādājošu pamanījies dabūt gatavu.

    Komentēja Didulis, tieši 26.10.2007 20:55:05

  6. nu kā 2vas dažādas datu bāzes, viens db serveris, viens useris, 2vas konekcijas.

    Komentēja marcis, tieši 27.10.2007 14:26:22

  7. Ja pareizi sapratu problēmu, tad tā tam ir jābūt un tā ir *dokumentēta* fīča.

    Description
    resource mysql_connect ( [string $server [, string $username [, string $password [, bool $new_link [, int $client_flags]]]]] )

    new_link
    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.

    Tas, ka DB cita - tas jau vairs nav mysql_connect() parametrs, db selectu vēlāk izpilda kā query (”use db_name”), tb reāli tā *nav* “konnekcija pie konkrētas datubāzes”, bet gan pie db servera. Šeit, cik sapratu, tavā gadījumā tiek norādīts vienāds serv, vienāds user, vienāds pass un nav norādīts, ka $new_link būtu true, right? ;)

    Komentēja binary, tieši 04.11.2007 11:41:26

  8. o token :) tnx

    Komentēja marcis, tieši 04.11.2007 18:47:41

  9. ņem par labu ;)

    Komentēja binary, tieši 04.11.2007 18:56:31

Komentēt