DB Error: mismatch (in a PHP script)

If you get something like the “DB Error: mismatch” message in a PHP script, this is probably caused by a bug in the script. If I get it right, the message means: there is a mismatch between the number of placeholders (e.g. “?” signs) in your database query and the number of parameters given to the query() method.

For instance, if your query is “SELECT * FROM people WHERE honesty>3”, but you mistakenly call it like this:

$dbh-> query( "SELECT * FROM people WHERE honesty>3", $threshold );

Where you probably meant:

$dbh-> query( "SELECT * FROM people WHERE honesty>?", $threshold );

I think this is reported by the DB_Common class (since a certain version).

On the topic:

Subversion / Apache griefs: can’t commit, MERGE failed

Installed Subversion. Configured Apache to run as a Subversion server. Seems to work. I even tried some WebDAV applications (davfs) on it. Work. Not perfectly (some strange errors), but it does work.

Until I tried to checkout, modify and commit with SVN itself:

svn: Commit failed (details follow):
svn: MERGE request failed on '/'
svn: Can't open directory '/home/ivan/bsite/svn-repo/db/transactions/0-1.txn/transactions': No such file or directory

No matter what I tried SVN can’t commit into a repository without an error.

Turns out this problem is caused by Apache and Subversion being compiled against different versions of the APR libraries. I got it fixed by rebuilding apache and subversion from their fresh sources.

Thank you, Christopher Ness! Your post helped me a lot.

Low-profile AGP video card with 3D acceleration

I was looking for a good low-profile AGP video card. nVidia GeForce- or ATI Radeon-based. With DVI output. Preferably silent (with no cooler). Here is what I’ve found so far.

nVidia GeForce:

  • Gigabyte GV-N62128DS or GV-N55128DS
  • Asus N6200/TD/128M
  • XFX Geforce 6200 AGP: PVT44APANG, PV-T44A-WANG.
  • MSI Video 8998010 GeForce FX5200 or MSI GeForce 6200 (NX6200AX-TD128LF).

ATI:

  • SAPPHIRE 100576L Radeon 9550SE 128MB DDR AGP 4X/8X Low Profile
  • PowerColor RADEON 9200SE AGP.
  • Gigabyte GV-R925128DE.
  • Asus A9250/TD/128M.

And I got myself Asus N6200/TD/128.

The problem with nVidia cards is that their Linux driver is closed source. That wouldn’t be a problem at all if the driver in it’s current state didn’t break one important thing in my PC usage: hibernate function (swsusp, to be precise). With an old Radeon I could send my PC to sleep and be 100% sure that it would wake back up. Not anymore with GeForge 6200 and the latest nVidia driver.

Proper XPath/XSLT error reporting in XML::LibXSLT. The patch

UPDATE: This post and this patch are no longer needed. A new version of XML::LibXSLT fixes the error reporting and some other issues. Below is the original post for purely historical reasons.


XML::LibXSLT is a perl module, written and maintaned by Matt Sergeant. The module provides access to the fine Gnome project’s XSLT library libxslt. XML::LibXSLT versions up to and including 1.58 have one serious deficiency though: they provide rudimentary reporting of XPath and XSLT processing errors.

This patch tries to fix this deficiency and makes XML::LibXSLT die in case of error with a full error message, often multiple lines. The generated message will be similar to the one xsltproc tool would produce.

Get the patch

Download: xml-libxslterror-reporting-patch.txt

A summary of the patch changes follows.

Continue reading