Greetings, been a DBI user for years now working with stuff from
unixODBC, Oracle, MySQL, etc...etc...

So, the issue I'm having is with a simple update statement to a mysql
database.

Here's a small snippet of code....

my $MAPSQL="UPDATE varmaptest SET value=? WHERE grpid=(SELECT id FROM
machinegroups WHERE name=?) AND varid=(SELECT id FROM variables WHERE
name=?)";

my $DBUSER="user";
my $DBPASS="password";
my $SQLDS="dbi:mysql:database=$CADB;host=databasehost";

my $dbh = DBI->connect($SQLDS,$DBUSER,$DBPASS);

my $sth = $dbh->prepare($MAPSQL);
unless ($sth->execute("newval","group1.mygroup.mine","varname1")) {
   warn "Database error: ".$dbh->errstr;
}

So, for some reason, the update never happens, and I get no errors. I
have enabled SQL tracing and from the output, I get the following
statement:

UPDATE varmaptest SET value='newval' WHERE grpid=(SELECT id FROM
machinegroups WHERE name='group1.mygroup.mine') AND varid=(SELECT id
FROM variables WHERE name='varname1');

Now, if I actually run the mysql client, and paste this statement into
it and execute it, it works perfectly.

I'm using perl 5.10.1, mysql database version 5.1.49, DBI version
1.612.

On a side note, because I know someone is going to ask, I use the same
database handle ($dbh) on other SELECT statements and they all return
data fine (so it's not a database connectivity issue).

Does anyone have any ideas, or at least can give me a good kick in the
head as to where I should look next?

Thanks in advance;

Eirik..

Reply via email to