Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re^2: 500 internal server error when connecting to mysql database

by mcfarnell (Initiate)
on May 20, 2023 at 17:21 UTC ( [id://11152345]=note: print w/replies, xml ) Need Help??


in reply to Re: 500 internal server error when connecting to mysql database
in thread 500 internal server error when connecting to mysql database

Thank you both for these ideas. I'm sorry if I'm not including all the information I should - I'll continue to do the best I can. I checked my dbase, tablename, username, and password. They only contain letters or numbers. The password does have a % sign, but when I printed it out it seems to be ok. Would that cause a problem? I also tried all of the formats for the DSN variable as your link suggested. You can see them in my code commented out. None of them changed the output. So here is my updated code:
#!/usr/bin/perlml use cPanelUserConfig; use 5.010; use strict; use warnings; use CGI::Carp qw/fatalsToBrowser/; print "Content-type: text/html\n\n"; #B1. Database name, table name, user name, and password #respectively. User name and password are case sensitive. my $dbase="***"; my $tablename="***"; my $username="***"; my $mysqlpassword="***"; #These two should not need modified unless connecting to MySQL on #a remote server or to a database platform other than MySQL. my $hostname="localhost"; #my $hostname = "localhost:3306"; #my $hostname = "p3plcpnl1204.prod.phx3.secureserver.net"; my $databaseserver="mysql"; use DBI; say "Perl MySQL Connect Demo"; # MySQL database configuration #my $DSN = "dbi:mysql:$dbase:$hostname"; #my $DSN = "DBI:mysql:$dbase"; #my $DSN = "DBI:mysql:database=$dbase;host=$hostname"; my $DSN = "DBI:mysql:database=$dbase;host=$hostname"; my $dbh = DBI->connect( $DSN, $username, $mysqlpassword ); my $dbh = ""; if ($dbh) { say "Connected to the MySQL database."; } else { say "Catastrophe! Connection failure with DSN '$DSN', pass '$mysql +password', user '$username': $DBI::errstr +"; }
When I run this code as is, the output is:
500 Internal Server Error Please forward this error screen to cowlitzcountycemeterydistrict6.inf +o's WebMaster. The request was not completed. The server met an unexpected condition. cowlitzcountycemeterydistrict6.info/cgi/test2.pl (port 80)
When I comment out the DBI->connect line, line number 35, the output is:
Perl MySQL Connect Demo Catastrophe! Connection failure with DSN 'DBI: +mysql:database=***;host=localhost', pass '***', user '***': +
I was able to find an error log under cpanel, even though GoDaddy told me I only had access to PHP error logs. The error I am seeing is:
/usr/bin/perlml: relocation error: /home/b3mtw1376jad/perl5/lib/perl5/ +x86_64-linux-thread-multi/auto/DBD/mysql/mysql.so: symbol mysql_optio +ns4, version libmysqlclient_18 not defined in file libmysqlclient.so. +18 with link time reference
I assume this error in the error log is the answer to my problems? But I'm not sure how to fix it. We are on a shared hosting plan. Does this mean I need the server admin to do something? I found this article related to this issue: https://dev.mysql.com/doc/refman/8.0/en/perl-support-problems.html

Replies are listed 'Best First'.
Re^3: 500 internal server error when connecting to mysql database
by hv (Prior) on May 20, 2023 at 18:24 UTC

    I was able to find an error log under cpanel, even though GoDaddy told me I only had access to PHP error logs. The error I am seeing is:

    /usr/bin/perlml: relocation error: /home/b3mtw1376jad/perl5/lib/perl5/ +x86_64-linux-thread-multi/auto/DBD/mysql/mysql.so: symbol mysql_optio +ns4, version libmysqlclient_18 not defined in file libmysqlclient.so. +18 with link time reference

    I assume this error in the error log is the answer to my problems?

    Almost certainly it is, yes: at the point of loading the DBD::mysql shared library, it is giving an error that one of the symbols it expects to see in the additional libraries it links to has not been found.

    I suspect this means that when the server admin built DBD::mysql they built it against a different version of the mysql libraries than are currently on this server. That is something the server admin will need to fix, and not something you will be able to fix or work around yourself (to the best of my knowledge).

    Hopefully contacting them with that error message should be sufficient for them to diagnose and fix the issue.

Re^3: 500 internal server error when connecting to mysql database
by kcott (Archbishop) on May 20, 2023 at 23:58 UTC
    "The password does have a % sign, but when I printed it out it seems to be ok. Would that cause a problem?"

    This is a situation where I would apply "the first great virtue of a programmer": laziness.

    Instead of checking if individual strings might be a problem when interpolated; e.g.

    $ perl -Mstrict -Mwarnings -E 'my $v = qq{$s@a%h}; say $v' Possible unintended interpolation of @a in string at -e line 1. Global symbol "$s" requires explicit package name (did you forget to d +eclare "my $s"?) at -e line 1. Global symbol "@a" requires explicit package name (did you forget to d +eclare "my @a"?) at -e line 1. Execution of -e aborted due to compilation errors.

    Simply side-step the issue by not interpolating; e.g.

    $ perl -Mstrict -Mwarnings -E 'my $v = q{$s@a%h}; say $v' $s@a%h

    See also: "perlop: Quote and Quote-like Operators"; which starts with a table showing what does, and does not, interpolate.

    — Ken

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (3)
As of 2024-04-26 06:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found