Kan de PDO driver voor PostgreSQL niet laden ..
na wat tutorials hier te hebben gelezen over pgSQL dacht ik dat het maar eens tijd werd om wat nieuws te leren. Met volle moed heb ik toen pgSQL geïnstalleerd, en toen was de PDO driver aan de beurt. Alleen bij het 2e punt gaat het helemaal faut. Zodra ik PHP opstart krijg ik eerst de error "Kan de ordinaal 98 niet vinden in DLL-bestand LIBPQ.dll", een bestand wat ik nota bene met Google heb opgezocht, als ik dan op OK druk komt er weer een error.
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\ext\php_pdo_pg
sql.dll' - Het besturingssysteem kan %1 niet uitvoeren. Ik ben er 100% zeker van dat het bestand bestaat, én dat de folder goed is ingesteld, omdat ik ook andere modules laadt. What to do? :(
Zou het kunnen dat je een 64 bit Windows hebt, en een 32 bit dll probeert te laden of andersom?
Helaas niet genoeg verstand van lokale PostgreSQl om je te helpen... (heb je je bestand v/e betrouwbare bron gedowloaded? Lijkt mij eerder een fout in je bestand, of erger nog: windows.)
Maar ik heb deze foutmelding hier (Mac OS X, 10.5) ook wel een paar keer gehad, en dat kwam dan doordat ik een 32 bit .so (soort .dll) wou laden in een PHP-Apache installatie die beiden 64 bit waren. De .so opnieuw compilen, maar dan met CFLAGS -arch x86_64.
Anyway, het is even handig om te vermelden welke webserver (Apache2, IIS?) je gebruikt, het besturingssysteem, en enige bijzonderheden.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
klikkerdeklik.
En wanneer je met PDO aan de slag gaat, hou de functie PDO::lastInsertId even heel goed in de gaten, die werkt met PostgreSQL echt heel anders. Je kunt beter met een SELECT-query het gewenste id vooraf opvragen en in je INSERT-query stoppen.
MySQL's auto_increment en sequences van andere databases, waaronder dus PostgreSQL, zijn hele andere dingen. Jouw SQL zal er per database toch verschillend uit gaan zien. Helaas, maar het is niet anders.
Offtopic: PostgreSQL kun je uiteraard ook prima zonder PDO aansturen, PHP heeft een hele serie pgSQL-functies in huis: En wanneer je met PDO aan de slag gaat, hou de functie PDO::lastInsertId even heel goed in de gaten, die werkt met PostgreSQL echt heel anders. Je kunt beter met een SELECT-query het gewenste id vooraf opvragen en in je INSERT-query stoppen.
MySQL's auto_increment en sequences van andere databases, waaronder dus PostgreSQL, zijn hele andere dingen. Jouw SQL zal er per database toch verschillend uit gaan zien. Helaas, maar het is niet anders.
Maargoed, ik heb dus Windows XP 32 bit, maar geen webserver omdat ik die niet nodig heb. Laatste versie van PHP is geïnstalleerd m.b.v. de automatische installer en met de zip heb ik alle modules opgehaald.
Edit: http://bugs.php.net/bug.php?id=44905 daar lijkt het probleem te staan, netzoals het antwoord. Even proberen dus maar. :>
Gewijzigd op 01/01/1970 01:00:00 door Remco
Je hebt geen webserver nodig? Hoe wil je dan ooit je webpagina's bekijken of doe je dat in commandline soms?
De pdo_pgsql.dll uit 5.2.6 is slechts 26KB ipv de 93KB van de oudere versie.
Dus dll vervangen een gaan!
Remco schreef op 08.06.2008 11:26:
En wat is er mis met een database-classe? PDO gebruiken omdat anderen het gebruiken, dat lijkt mij niet de meest handige aanpak. Gebruik PDO wanneer je een systeem bouwt die zonder aanpassingen op diverse databases moet werken, dat lijkt mij een stuk handiger. Dat betekent alleen wel dat je de kracht van een database vrijwel niet kunt gebruiken, databases verschillen teveel van elkaar. Zeker wanneer ook MySQL wilt ondersteunen, dat vertoont op heel wat gebieden afwijkend gedrag.Ik weet dat er ook functies zijn zonder PDO, maar je moet toch meegaan met de flow en functionele poeb vind ik steeds lastiger werken omdat ik alleen nogmaar in OO-script.
PDO is geen doel, het is een middel.