=== Slim/Schema.pm ================================================================== --- Slim/Schema.pm (revision 13070) +++ Slim/Schema.pm (local) @@ -60,6 +60,13 @@ my $password = Slim::Utils::Prefs::get('dbpassword'); my ($driver) = ($source =~ /^dbi:(\w+):/); + # Bug 3443 - append a socket if needed + # Windows doesn't use named sockets (it uses TCP instead) + if (Slim::Utils::OSDetect::OS() ne 'win' && $source =~ /mysql/i && $source !~ /mysql_socket/i) { + + $dsn .= sprintf(':mysql_socket=%s', Slim::Utils::MySQLHelper->socketFile); + } + $class->connection($source, $username, $password, { RaiseError => 1, AutoCommit => 0, === Slim/Utils/MySQLHelper.pm ================================================================== --- Slim/Utils/MySQLHelper.pm (revision 13070) +++ Slim/Utils/MySQLHelper.pm (local) @@ -19,7 +19,7 @@ use Slim::Utils::Prefs; use Slim::Utils::SQLHelper; -INIT { +{ my $class = __PACKAGE__; for my $accessor (qw(confFile mysqlDir pidFile socketFile needSystemTables processObj)) { @@ -37,6 +37,18 @@ $::d_mysql && msg("MySQLHelper: init() Not starting MySQL - looks to be user configured.\n"); + if (Slim::Utils::OSDetect::OS() ne 'win') { + + # The user might have a socket file in a non-standard + # location. See bug 3443 + my $socket = `mysql_config --socket`; + chomp($socket); + + if ($socket && -S $socket) { + $class->socketFile($socket); + } + } + return 1; } === scanner.pl ================================================================== --- scanner.pl (revision 13070) +++ scanner.pl (local) @@ -32,6 +32,7 @@ use Slim::Music::MusicFolderScan; use Slim::Music::PlaylistFolderScan; use Slim::Utils::Misc; +use Slim::Utils::MySQLHelper; use Slim::Utils::OSDetect; use Slim::Utils::Prefs; use Slim::Utils::Scanner; @@ -158,6 +159,9 @@ $::d_server && msg("SlimServer strings init...\n"); Slim::Utils::Strings::init(catdir($Bin,'strings.txt'), "EN"); + $::d_server && msg("SlimServer MySQL init...\n"); + Slim::Utils::MySQLHelper->init(); + $::d_server && msg("SlimServer Info init...\n"); Slim::Music::Info::init(); } @@ -218,6 +222,8 @@ if ($INC{'Slim/Schema.pm'}) { Slim::Schema->forceCommit; } + + Slim::Utils::MySQLHelper->cleanup; } main();