On 3/11/19 6:04 PM, macpo...@raf.org wrote: > MacPorts wrote: > >> On 3/11/19 1:34 AM, Andrew Udvare wrote: >>>> On 2019-03-11, at 00:10, MacPorts <macpo...@hyperbole-software.com> wrote: >>>> >>>> I noticed that the socket in /var/mysql is called mysql.sock while the one >>>> in /opt/local/var/run/mysql5 is called mysqld.sock (note the 'd' between >>>> 'l' and '.'). >>>> >>>> I tried using >>>> $ sudo ln -s /var/mysql/mysql.sock /opt/local/var/run/mysql5/mysqld.sock >>>> >>>> for some reason that also didn't work. >>>> >>>> Then I tried: >>>> $ sudo ln -s /var/mysql/mysql.sock /opt/local/var/run/mysql5/mysql.sock >>>> $ sudo mv /opt/local/var/run/mysql5/mysql.sock >>>> /opt/local/var/run/mysql5/mysqld.sock >>>> >>>> this worked. I don't know why this worked and making the link directly >>>> didn't, but at least it's working now. >>>> >>> I ran into a similar issue a long time ago with PHP. PHP has an option to >>> control this setting at build time and it also has a runtime option in >>> php.ini. >>> >>> The DBI port should be doing the same. I don't think users should have to >>> add things outside of the prefix, unmanaged by port. >>> >> I thought creating a link from the socket file to where Perl expects to >> find it was working. It's not. >> >> What is working is to specify the path to the socket file with >> "mysql_socket=/var/mysql/mysql.sock" in the dsn when I make the >> connection, but, that makes the code specific to my machine, so I'd like >> to find a better solution. Still looking. >> >> Carl. > how about putting the dsn in a config file for your application > or getting it from an environment variable rather than having > it inside the application's code? > > cheers, > raf > > I have [client] socket=/var/mysql/mysql.sock
[mysqld] socket=/var/mysql/mysql.sock in /etc/my.cnf and /opt/local/etc/mysql57/my.cnf. I've looked for other config files and can't find any others that apply to MySQL. I set the environment variable DBD_MYSQL_SOCKET=/var/mysql/mysql.sock. $dbh = DBI->connect($dsn, $db_user_id, $db_password) still says: Can't connect to local MySQL server through socket '/opt/local/var/run/mysql57/mysqld.sock Thanks for the suggestions, Carl.