MariaDB PDO integer string probléma
2022-05-05T18:25:54+02:00
2022-05-05T19:55:14+02:00
2022-08-12T08:50:31+02:00
a-p
Sziasztok!

Egy oldalköltöztetés után belefutottam abba a problémába, hogy az új szerveren nem mysql hanem mariadb motor van, és az eddig működő lekérdezések zöme elhasalt akkor, ha matematikai műveletekről volt szó.
Kiderült, hogy a lekérdezések esetén, hiába van az adatbázisban integer típusú cellában az adat, a pdo-nak hiába vannak az alábbi attribútomok megadva (PDO::ATTR_EMULATE_PREPARES: false és PDO::ATTR_STRINGIFY_FETCHES: false), konstans stringként jön vissza az adat és innentől az aritmetikai műveletek kuka (és még jó pár más dolog is).
Van erre valami épkézláb megoldás? A tárhelyszolgáltató "alakítsd át az összes lekérdezést CAST függvénnyel tanácsát meghagynám a végére, mert az minden, csak nem rendes megoldás.

10.5.13 MariaDB és 7.3.6 PHP a szóban forgó páros.

Köszi a válaszokat!
Mutasd a teljes hozzászólást!
A jelenségnek nincs köze a MariaDB-hez; a régi készülék a mysqlnd drivert használja, az új meg a nem azt. A configure-nál ilyen opciók vannak:

--with-mysqli[=FILE] Include MySQLi support. FILE is the path to mysql_config. If no value or mysqlnd is passed as FILE, the MySQL native driver will be used --with-pdo-mysql[=DIR] PDO: MySQL support. DIR is the MySQL base directory. If no value or mysqlnd is passed as DIR, the MySQL native driver will be used --enable-mysqlnd Enable mysqlnd explicitly, will be done implicitly when required by other extensions
Mutasd a teljes hozzászólást!

  • Ha egy rendszernek vannak adatbázis specifikus megoldásai, akkor szervercsere esetén is olyan környezetet kell biztosítani, amelyben korábban a rendszer futott. Az adatbázis migráció - két különböző gyártótól származó megoldás között - adat szinten sem szokott egyszerű lenni, akkor meg már végképp bonyolult, ha erre jön még rá az ezen felüli db specifkikus megoldások (tároltak, függvények, stb.).
    Ha a rendszered eddig MySQL-en futott, akkor továbbra is ezen kell futtatni, maximum verzió update lehet, de ez sem megy mindig simán. A MariaDB teljesen eltérő megoldásokkal rendelkezik, mint a MySQL, az adatok típusazonosságát pedig sokszor manuálisan kell - programozottan - átvinni, egyik rendszerből, a másikba. A CAST sem biztos, hogy jó lesz.
    Mutasd a teljes hozzászólást!
  • A jelenségnek nincs köze a MariaDB-hez; a régi készülék a mysqlnd drivert használja, az új meg a nem azt. A configure-nál ilyen opciók vannak:

    --with-mysqli[=FILE] Include MySQLi support. FILE is the path to mysql_config. If no value or mysqlnd is passed as FILE, the MySQL native driver will be used --with-pdo-mysql[=DIR] PDO: MySQL support. DIR is the MySQL base directory. If no value or mysqlnd is passed as DIR, the MySQL native driver will be used --enable-mysqlnd Enable mysqlnd explicitly, will be done implicitly when required by other extensions
    Mutasd a teljes hozzászólást!
  • Azt azért nem nevezném különleges adatbázis-specifikus megoldásnak, - mondhatni a világ legalapabb dolga még microsoft access-ben is - hogy ha lekérek egy adatot, akkor az úgy érkezzen meg, ahogy a táblában letárolom, főleg ha az erre vonatkozó kódbeli kapcsolókat aktiválom (ha már nem elég egyértelmű, hogy nem cserélgetjük az adattípusokat, "csak mert miért ne" alapon : ) ).

    Sajnos a költözést az ügyfél kérte, a szerver sima osztott szerver, tehát se én nem férek hozzá szerverbeállításokhoz, se a kedvemért nem fogják állítgatni, azaz sok dolog adott, és hát ezzel kell főzni :-/

    A kérdés igazából az, hogy ezt kódból tudom-e valahogy megerőszakolni, (anélkül, hogy mindent írjak át) vagy veszett fejsze nyele? Amiket én találtam, azokat biztosan nem tudom keresztül verni a szolgáltatón.
    Mutasd a teljes hozzászólást!
  • Igen, sajnos én is erre jutottam :(
    A kérdés az, hogy ha erre nincs ráhatásom (nincs), kódból valahogy tudok-e megoldást rá azon kívül, hogy mindent átírok/átkonvertálok manuálisan?
    Illetve amibe bele se merek még gondolni, hogy az adatbázisba írásnál ez okoz-e bármilyen problémát majd...
    Mutasd a teljes hozzászólást!
  • (Off: Ilyenkor kellene elgondolkozni azon, hogy minek is kellett ebbe a PDO-ba egyáltalán belemenni.)
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd