Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

DBD - Undefined Value using Prepare()

by awohld (Hermit)
on Jul 14, 2005 at 09:39 UTC ( [id://474807]=perlquestion: print w/replies, xml ) Need Help??

awohld has asked for the wisdom of the Perl Monks concerning the following question:

I'm starting my own server and porting my perl scripts from my web host's server to mine.

My scripts work fine on the old server. On the new server I'm getting this error:

Software error: Can't call method "prepare" on an undefined value at /www/cgi-bin/scri +pt.pl line 98.
Here is my code:
1 #!/usr/bin/perl -wT 2 3 use DBI; 4 use strict; 5 use CGI; 6 use CGI::Carp qw(fatalsToBrowser); 86 ##Start database connections###### 87 my $database = "db"; 88 my $db_server = "localhost"; 89 my $user = "user"; 90 my $password = "password"; 91 92 ##Connect to database, insert statement, & disconnect # 93 my $dbh = DBI->connect("DBI:mysql:$database:$db_server", $user +, $password); 94 95 my $statement = "SELECT DISTINCT city FROM table WHERE state=? + AND approved = 'yes' ORDER BY city"; 96 97 my $sth; 98 $sth = $dbh->prepare($statement) or die "Couldn't prepare the +query: ".$sth->errstr;
Any idea why this code is failing on my new server? Is $statement on line 98 really undefined?

I've installed Bundle::DBI and DBD::mysql.

Should I install some other module? Below is a list of my installed Perl modules:

/usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/Bundle/DBD/mysq +l.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/File.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/ExampleP.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/Proxy.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/Sponge.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/DBM.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/mysql.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/NullP.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/mysql/GetIn +fo.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD/Metadat +a.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/Bundle/DBD/mysq +l.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/File.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/ExampleP.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/Proxy.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/Sponge.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/DBM.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/mysql.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/NullP.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/mysql/GetIn +fo.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD/Metadat +a.pm /usr/lib/perl5/site_perl/5.8.6/DBD/Multiplex.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/Bundle/DBD/mysq +l.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/File.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/ExampleP.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/Proxy.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/Sponge.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/DBM.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/mysql.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/NullP.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBD/mysql/GetIn +fo.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD/Metadat +a.pm /usr/lib/perl5/site_perl/5.8.6/DBD/Multiplex.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/Bundle/DBI.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/PurePerl.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProxyServer +.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Profile.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Roadmap.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProfileDump +er.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Changes.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProfileData +.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/FAQ.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/W32ODBC.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/SQL/Nano.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +foType.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +foReturn.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +fo/ODBC.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +fo/ANSI.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProfileDump +er/Apache.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD/Metadat +a.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/Win32/DBIODBC.p +m /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/Bundle/DBI.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/PurePerl.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProxyServer +.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Profile.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Roadmap.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProfileDump +er.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Changes.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProfileData +.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/FAQ.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/W32ODBC.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/SQL/Nano.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +foType.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +foReturn.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +fo/ODBC.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +fo/ANSI.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProfileDump +er/Apache.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD/Metadat +a.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/Win32/DBIODBC.p +m /usr/lib/perl5/site_perl/5.8.6/DBI/Format.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell/Timing.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell/FindSqlFile.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell/SQLMinus.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell/Spool.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell/Completion.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Format/SQLMinus.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/Bundle/DBI.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/PurePerl.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProxyServer +.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Profile.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Roadmap.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProfileDump +er.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Changes.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProfileData +.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/FAQ.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/W32ODBC.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/SQL/Nano.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +foType.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +foReturn.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +fo/ODBC.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/Const/GetIn +fo/ANSI.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/ProfileDump +er/Apache.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/DBI/DBD/Metadat +a.pm /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi/Win32/DBIODBC.p +m /usr/lib/perl5/site_perl/5.8.6/DBI/Format.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell/Timing.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell/FindSqlFile.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell/SQLMinus.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell/Spool.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Shell/Completion.pm /usr/lib/perl5/site_perl/5.8.6/DBI/Format/SQLMinus.pm

Replies are listed 'Best First'.
Re: DBD - Undefined Value using Prepare()
by dbwiz (Curate) on Jul 14, 2005 at 09:47 UTC

    The DBI is telling you that you are using a method from an object that has not been initialized. Most likely, your call to onnect failed, but since you are not checking for errors, you did not realize it.

    This statement

    my $dbh = DBI->connect("DBI:mysql:$database:$db_server", $user, $passw +ord);

    Should be :

    my $dbh = DBI->connect("DBI:mysql:$database;host=$db_server", $user, $password, {RaiseError=> 1}) or die $DBI::errstr;

    Then, if something goes wrong, the DBI will tell you why, in the right place where you need it.

    P.S. Remove that list of modules from your post. It does not add anything useful, and it's just confusing. And, please, don't use line numbers in your code, because it makes difficult to download it.

    More useful for you should be to check our Tutorials page for some enlightening reading. (e.g.: How (Not) To Ask A Question, Before asking a database related question ...)

Re: DBD - Undefined Value using Prepare()
by marto (Cardinal) on Jul 14, 2005 at 10:09 UTC
    "I'm starting my own server and porting my perl scripts from my web host's server to mine."

    Hopefully you are also porting the database from your hosts server to your server :)

    Martin

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://474807]
Approved by Nevtlathiel
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (4)
As of 2024-03-29 15:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found