Hoi,
Ik heb een vervelend probleem met de combi PEAR en Mysql waar ik niet uit kom. Als ik een INSERT of UPDATE query vanuit mijn applicatie (PHP) naar PEAR stuur, dan krijg ik een 'unknown error' terug: DB Error: unknown error . SELECT queries gaan daarentegen gewoon goed. Daarnaast heb ik dit probleem op mijn laptop niet en daar draait dezelfde applicatie.
Ik ben gisteren de hele dag aan het vogelen geweest met deze fout. Hieronder wat details:
1. Query nalopen en user-rechten
Altijd als ik een fout van de database krijg, print ik de query even op het scherm en deze voer ik vervolgens in in SQLYog, een mysql front-end. De fout ligt namelijk zo goed als altijd in de query of in databaserestricties. Het rare is dat er dit keer met de query niets mis is. Gegevens worden gewoon ge-INSERT via SQLYog, maar dus niet via mijn applicatie. Ik gebruik in SQLYog dezelfde Mysql user als in mijn applicatie dus een user/rechten probleem is daarmee ook uitgesloten. Helaas, want ik kwam op internet dit als mogelijke oorzaak tegen. Bovendien is de query een simpele INSERT waar qua syntax weinig mee fout kan gaan.
2. PEAR code
Vervolgens heb ik de code van PEAR en in het bijzonder DB.php erbij gepakt. Dit is de klasse die mijn query afhandelt. Ik hoopte hieruit op te maken onder welke omstandigheden die 'unknown error' wordt afgegeven, maar ik kom daar niet uit helaas.
3. Omgeving
Ik heb op mijn laptop dezelfde applicatie lopen en daar werkt die INSERT actie vlekkeloos. De door mij geschreven applicatiecode op mijn laptop en desktop is precies hetzelfde (code op desktop is gekopieerd van laptop). Ik heb een sterk vermoeden dat het probleem daarom in de omgeving ligt. Ik heb wel verschillen zitten in de versies die ik gebruik:
laptop:
mysql 4.1
php 5.0.4
pear 1.77
desktop:
mysql 5.0
php 5.1.2
pear 1.77
Dat het probleem in dat verschil van MYSQL versies zou liggen lijkt me weer niet logisch. Die query draait gewoon in SQLYog, zowel op mijn laptop als op mijn desktop, dus dat zal het probleem niet zijn. Pear versie is hetzelfde, dus dan blijft het verschil tussen PHP 5.0.4 en 5.1.2 over als mogelijke oorzaak. Ik kan in de PEAR documentatie echter ook niets vinden over mogelijke problemen met PHP 5.1.x.
Kort gesteld: waarom werken INSERT queries niet op mijn desktop en SELECT queries wel, terwijl ze het met een minimaal verschil in omgevingen wel doen op mijn laptop?
Wedden dat het iets heel simpels is dat ik over het hoofd zie. Dat is altijd zo als ik een dag aan het debuggen ben en daar vervolgens een lap tekst op GoT post
/toevoeging:
Het algemene stukje code op regel 684 wat fouten verwerkt in DB.php van PEAR:
Ik heb voor de grap een var_dump gemaakt van $value en daar komt een enorme troep uit die mij weinig zegt, maar waar ik ook niet direct uit kan opmaken dat er iets mis gaat. Misschien dat jullie iets met die var_dump kunnen?
Ik heb een vervelend probleem met de combi PEAR en Mysql waar ik niet uit kom. Als ik een INSERT of UPDATE query vanuit mijn applicatie (PHP) naar PEAR stuur, dan krijg ik een 'unknown error' terug: DB Error: unknown error . SELECT queries gaan daarentegen gewoon goed. Daarnaast heb ik dit probleem op mijn laptop niet en daar draait dezelfde applicatie.
Ik ben gisteren de hele dag aan het vogelen geweest met deze fout. Hieronder wat details:
1. Query nalopen en user-rechten
Altijd als ik een fout van de database krijg, print ik de query even op het scherm en deze voer ik vervolgens in in SQLYog, een mysql front-end. De fout ligt namelijk zo goed als altijd in de query of in databaserestricties. Het rare is dat er dit keer met de query niets mis is. Gegevens worden gewoon ge-INSERT via SQLYog, maar dus niet via mijn applicatie. Ik gebruik in SQLYog dezelfde Mysql user als in mijn applicatie dus een user/rechten probleem is daarmee ook uitgesloten. Helaas, want ik kwam op internet dit als mogelijke oorzaak tegen. Bovendien is de query een simpele INSERT waar qua syntax weinig mee fout kan gaan.
2. PEAR code
Vervolgens heb ik de code van PEAR en in het bijzonder DB.php erbij gepakt. Dit is de klasse die mijn query afhandelt. Ik hoopte hieruit op te maken onder welke omstandigheden die 'unknown error' wordt afgegeven, maar ik kom daar niet uit helaas.
3. Omgeving
Ik heb op mijn laptop dezelfde applicatie lopen en daar werkt die INSERT actie vlekkeloos. De door mij geschreven applicatiecode op mijn laptop en desktop is precies hetzelfde (code op desktop is gekopieerd van laptop). Ik heb een sterk vermoeden dat het probleem daarom in de omgeving ligt. Ik heb wel verschillen zitten in de versies die ik gebruik:
laptop:
mysql 4.1
php 5.0.4
pear 1.77
desktop:
mysql 5.0
php 5.1.2
pear 1.77
Dat het probleem in dat verschil van MYSQL versies zou liggen lijkt me weer niet logisch. Die query draait gewoon in SQLYog, zowel op mijn laptop als op mijn desktop, dus dat zal het probleem niet zijn. Pear versie is hetzelfde, dus dan blijft het verschil tussen PHP 5.0.4 en 5.1.2 over als mogelijke oorzaak. Ik kan in de PEAR documentatie echter ook niets vinden over mogelijke problemen met PHP 5.1.x.
Kort gesteld: waarom werken INSERT queries niet op mijn desktop en SELECT queries wel, terwijl ze het met een minimaal verschil in omgevingen wel doen op mijn laptop?
Wedden dat het iets heel simpels is dat ik over het hoofd zie. Dat is altijd zo als ik een dag aan het debuggen ben en daar vervolgens een lap tekst op GoT post
/toevoeging:
Het algemene stukje code op regel 684 wat fouten verwerkt in DB.php van PEAR:
PHP:
1
2
3
| if (DB::isError($value)) { $value = $value->getCode(); } |
Ik heb voor de grap een var_dump gemaakt van $value en daar komt een enorme troep uit die mij weinig zegt, maar waar ik ook niet direct uit kan opmaken dat er iets mis gaat. Misschien dat jullie iets met die var_dump kunnen?
[ Voor 17% gewijzigd door Verwijderd op 24-01-2006 15:10 ]