Martin Evans wrote:
Thomas Walsh wrote:
Hello,

Would you be able to give me some advice on a DBI issue I'm having? I'm
quite new to Perl and completely new to
MySQL. I'm currently trying to install DBI (v1.607) and DBD::mysql (v4.010).
I'm hoping to use these along with
BioPerl and the Ensembl Perl API, to access the online genomic database
Ensembl automatically.

I'm trying to install both DBI and DBD::mysql to a local directory, as I
don't have root access.  I've been using
the commands given in the README files, as well as setting the PREFIX and
LIB parameters (I've shown these in the postscript).

DBI installs fine, but my problems started after I set PERL5LIB and tried to
install DBD::mysql.
The following call worked, as did the subsequent call to "make".

perl Makefile.PL PREFIX=/home/twalsh/lib/DBD-mysql-4.010
LIB=/home/twalsh/lib/DBD-mysql-4.010


It has been a while since I used mysql but you look to have done the right thing.

However, the call to "make test" failed. Here's the output:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e"
"test_harness(0, 'blib/lib', 'blib/arch')" t/*.t

<snipped successes and skipped>

t/50chopblanks..............ok 1/29

#   Failed test '$name should not have blanks chopped'
t/50chopblanks..............NOK 15#   in t/50chopblanks.t at line 60.

#          got: ''
#     expected: ' '

#   Failed test '$name should not have blanks chopped'
#   in t/50chopblanks.t at line 60.
t/50chopblanks..............NOK 22#          got: ' a b c'

#     expected: ' a b c '
# Looks like you failed 2 tests of 29.
t/50chopblanks..............dubious

    Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 15, 22
    Failed 2/29 tests, 93.10% okay

Looks like you are not the only one with this chopblanks problem:

http://www.nabble.com/Bundle::Bugzilla-install-hangs-td20363858.html
http://lists.mysql.com/perl/4296
http://ppm4.activestate.com/i686-linux/5.8/818/C/CA/CAPTTOFU/DBD-mysql-4.008.d/log-20080816T160904.txt

so I'd doubt it is due to the way you are installing it. The second one looks identical to yours and is still unanswered.

<snipped more successes and skipped>


t/76multi_statement.........NOK 13#   Failed test 'Second update had 2
warnings'
#   in t/76multi_statement.t at line 50.
#          got: '0'
#     expected: '2'

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The process hangs at that point. Since this is the "make test" stage, I'm
guessing that maybe the problem at this
stage of the installation actually indicates that something's going wrong at
an earlier stage, but I haven't
been able to figure out what I might be doing wrong during those earlier
parts of the installation.

What could be going wrong?

Are there perhaps settings in the compilation that aren't correct (see
post-postscript)?

Thanks for your time.

Regards,

Thomas Walsh.

P.S. Here is the list of commands I'd hoped to use to install DBI and
DBD::mysql:

    perl Makefile.PL PREFIX=/home/twalsh/lib/DBI-1.607
LIB=/home/twalsh/lib/DBI-1.607
    make
    make test
    make install

    PERL5LIB=/home/twalsh/lib/DBI-1.607/i686-linux
    export PERL5LIB
    perl -V

    perl Makefile.PL PREFIX=/home/twalsh/lib/DBD-mysql-4.010
LIB=/home/twalsh/lib/DBD-mysql-4.010
    make
    make test
    make install

P.P.S. Settings used to compile DBD::mysql:

I will use the following settings for compiling and testing:

  cflags        (mysql_config) = -I/usr/include/mysql -g -pipe -m32
-march=i386 -mtune=pentium4 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -fno-strict-aliasing
  embedded      (mysql_config) =
libs (mysql_config) = -L/usr/lib/mysql -lmysqlclient -lz -lcrypt
-lnsl -lm -L/usr/lib -lssl -lcrypto
  mysql_config  (guessed     ) = mysql_config
  nocatchstderr (default     ) = 0
  nofoundrows   (default     ) = 0
  ssl           (guessed     ) = 1
  testdb        (default     ) = test
  testhost      (default     ) =
  testpassword  (default     ) =
  testsocket    (default     ) =
Use of uninitialized value in printf at Makefile.PL line 175, <PIPE> line
93.

I thought it might be interesting to know what is on line 175 of Makefile.PL so I tried myself and got the same warning suggesting testsocket was not defined so I doubt this is the source of the problem.


  testuser      (            ) = twalsh

To change these settings, see 'perl Makefile.PL --help' and
'perldoc INSTALL'.


Any particular reason why you are not running MySQL 5 - I refer to "You must have MySQL version 5.0 and greater for this test to run". I see there is a MySQL 5.1 and 6 now.

Anyway, I tried the same version of DBD::mysql with a mysql server we have here and got the same failures but it did not hang:

PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00base....................ok
t/10connect.................ok
t/20createdrop..............ok
t/25lockunlock..............ok
t/29warnings................ok
t/30insertfetch.............ok
t/31insertid................ok
t/32insert_error............ok
t/35limit...................ok
t/35prepare.................ok
t/40bindparam...............ok
t/40bindparam2..............ok
t/40blobs...................ok
t/40catalog.................ok
t/40keyinfo.................ok
t/40listfields..............ok
t/40nulls...................ok
t/40numrows.................ok
t/40server_prepare..........ok
t/40server_prepare_error....ok
t/40types...................ok
t/41bindparam...............ok
t/41blobs_prepare...........ok
t/42bindparam...............ok
t/50chopblanks..............1/29
#   Failed test '$name should not have blanks chopped'
#   at t/50chopblanks.t line 60.
#          got: ''
#     expected: ' '

#   Failed test '$name should not have blanks chopped'
#   at t/50chopblanks.t line 60.
#          got: ' a b c'
#     expected: ' a b c '
# Looks like you failed 2 tests of 29.
t/50chopblanks.............. Dubious, test returned 2 (wstat 512, 0x200)
 Failed 2/29 subtests
t/50commit..................ok
t/55utf8....................skipped: SKIP TEST: You must have MySQL version 5.0 and greater for this test to run
t/60leaks...................skipped: Skip $ENV{SLOW_TESTS} is not set
t/65types...................ok
t/70takeimp.................ok
t/71impdata.................ok
t/75supported_sql...........ok
t/76multi_statement.........1/24
#   Failed test 'Second update had 2 warnings'
#   at t/76multi_statement.t line 50.
#          got: '0'
#     expected: '2'
# Looks like you failed 1 test of 24.
t/76multi_statement......... Dubious, test returned 1 (wstat 256, 0x100)
 Failed 1/24 subtests
t/80procs...................skipped: SKIP TEST: You must have MySQL version 5.0 and greater for this test to run

Unless someone else jumps in, if I get some time later today I'll look a bit further.

Martin

Ok, I found a minute or two. I'm not totally sure but the first test which fails for chopblanks inserts a string of one space character and when it is retrieved with ChopBlanks = 0, it comes back as an empty string. Perhaps this is a bug or perhaps this is some mysql server setting as the column is a varchar(64) which depending on your database and settings can maintain trailing spaces or not. As I'm not really using mysql these days I'm out of date wrt this.

The second chopblanks failure is the same issue i.e., it looks as though DBD::mysql or the server is removing trailing blanks whatever.

Didn't look at the other issue yet - one at a time.

Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

Reply via email to