On 08-May-2006 Michael Muratet US-Huntsville wrote:
> Greetings
> 
> I am trying to install mysql/DBI/DBD on a Dell Poweredge 6850 with quad
> dual-core Xeons running RedHat Enterprise v4. I removed the mysql rpms and
> installed 5.0.21 from source. I downloaded the 1.5 DBI and 3.003 DBD from
> CPAN and installed them from source. I have installed this software many
> times on many other machines without a hitch, but this time....
> 
> I have been chasing a problem with the perl interface to mysql for many days
> now. It began when I could not connect to mysql through /tmp/mysql.sock (and
> could not make the interface search there) and remains as what appears to be
> a corruption of data through the interface. I found a solution to the first
> problem on the mysql:install forum in the use of 127.0.0.1 instead of
> localhost. It bothers me that DBD/DBI are stuck on the location of the socket
> at /var/lib/mysql, but hey, at least it works now. I can't get any relief on
> the following problem. I have a simple test script I wrote to illustrate the
> problem:
> 
>       1 #! /usr/bin/perl -w
>       2
>       3 use strict;
>       4 use FileHandle;
>       5 use File::Basename;
>       6 use Getopt::Long;
>       7 use DBI;
>       8
>       9 #DBI->trace(4);
>      10
>      11 my $dbh = DBI->connect("DBI:mysql:database=test;host=127.0.0.1",
> 'root', 'pw', {RaiseError => 1, PrintError => 0}) or die "
>      11 Can't connect to database: $DBI::errstr\n";
>      12 DBI->trace($ARGV[1]);
>      13 my $sth = $dbh->prepare("$ARGV[0]");
>      14 $sth->execute();
>      15 while (my @row = $sth->fetchrow_array()) {
>      16     print "@row\n";
>      17 }
>      18
>      19 $sth->finish();
>      20
>      21 $dbh->disconnect or warn "Disconnection failed: $DBI::errstr\n";
> 
> It returns an uninitialized value:
> 
>     -> fetchrow_array for DBD::mysql::st (DBI::st=HASH(0x914bb0)~0x914af0)
> thr#504010
>     -> dbd_st_fetch for 00914ce0, chopblanks 0
>     <- dbd_st_fetch, 11 cols
>     <- fetchrow_array= ( '1' '1' '32' '226053' '185536415' '185546755' '1'
> '3764977' 'protein_coding' 'KNOWN' 'test' ) [11 items] row1 at testdb.pl line
> 15
> 1 1 32 226053 185536415 185546755 1 3764977 protein_coding KNOWN test
>     -> fetchrow_array for DBD::mysql::st (DBI::st=HASH(0x914bb0)~0x914af0)
> thr#504010
>     -> dbd_st_fetch for 00914ce0, chopblanks 0
>     <- dbd_st_fetch, 11 cols
>     <- fetchrow_array= ( '2' '1' '32' '226053' '185538047' '185541942' '1'
> '3780981' 'protein_coding' 'KNOWN' undef ) [11 items] row2 at testdb.pl line
> 16
> Use of uninitialized value in join or string at ./testdb.pl line 16.

Line 16 is printing the current row and the current row contains an undef as
last column - hence use of uninitialised value. NULL columns come back as
undefs.

> 2 1 32 226053 185538047 185541942 1 3780981 protein_coding KNOWN
>     -> fetchrow_array for DBD::mysql::st (DBI::st=HASH(0x914bb0)~0x914af0)
> thr#504010
>     -> dbd_st_fetch for 00914ce0, chopblanks 0
> 
> I seen in the documentation that inserting an uninitialized value will result
> in NULL (or whatever the default is), but shouldn't it return a string
> 'NULL'?

No - it returns undef.

> 
> Any help will be appreciated.
> 
> Thanks
> 
> Mike

Martin
--
Martin J. Evans
Easysoft Ltd, UK
http://www.easysoft.com

Reply via email to