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

Re^5: Reading host from defaults file with DBD::mysql

by pryrt (Abbot)
on Feb 01, 2019 at 15:28 UTC ( [id://1229244]=note: print w/replies, xml ) Need Help??


in reply to Re^4: Reading host from defaults file with DBD::mysql
in thread Reading host from defaults file with DBD::mysql

What module did you use for reading/parsing your INI file? Config::Tiny? Config::Simple? Config::INI? Something else? Or did you roll your own?

For example, Config::Tiny handles spaces around the equals just fine:

#!/usr/bin/perl -l use warnings; use strict; use Config::Tiny; my $ini_string = <<"EOINI"; a=nospace b = space [GROUP1] c=nospace d = space EOINI my $cfg = Config::Tiny->read_string($ini_string); use Data::Dumper; $Data::Dumper::Indent = 0; print Dumper $cfg; __END__ __OUTPUT__ $VAR1 = bless( {'_' => {'a' => 'nospace','b' => 'space'},'GROUP1' => { +'d' => 'space','c' => 'nospace'}}, 'Config::Tiny' );

I don't have the other two installed, but Config::INI claims to handle spaces around the equals, and Config::Simple's claim of "whitespace support" implies to me that it might

Replies are listed 'Best First'.
Re^6: Reading host from defaults file with DBD::mysql
by parv (Parson) on Feb 01, 2019 at 18:32 UTC

    The file, as part of $dsn string, is passed to DBI->connect method. I failed to find in (top level) DBI & DBD::mysql sources a point where it would have been parsed.

      Sorry, I didn't notice the filename went into the $dsn -- I'm not a database expert, and didn't know it could go there. Digging into the code, it appears that it's parsed via the underlying c code, using mysql_options(sock, MYSQL_READ_DEFAULT_FILE, df);. The mysql-options documentation says that you use that option to get it to read from the given file... The option-files doc claims that "Leading and trailing spaces are automatically deleted from option names and values", which implies that spaces around the equal shouldn't matter. It may be that you've got a different version of mysql than the 8.0 reference manual my searches brought me to, or that the statement is misleading and spaces around the equal are bad.

      edit: fix "optoins" typo. Also, want to clarify: when I saw the anonymous "seriously" reply, I wanted something slightly more helpful than that. However, I was apparently confused into believing the parsing was something you had done externally to what you had quoted, rather than something that mysql handles internally. So instead of being helpful, I went in the wrong debug direction. Sorry.

        Hmmmmmmmmmmm............

        I DID recently switch from community MySQL to MariaDB 10.2 (because it's apparently my only practical option on Gentoo Linux for a Galera cluster). Could MariaDB maybe be doing something iffy...? It wouldn't be the first behavioral change I've seen in MariaDB with no clearly apparent technical reason than to diverge from MySQL.

        (That said, I do laud MariaDB for not adopting MySQL 5.6's ill-conceived and badly-implemented history-sanitization "feature".)

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (4)
As of 2024-04-19 03:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found