2012-06-19 3 views
0

я получаю следующее сообщение об ошибке при попытке открыть соединение с MySQL работает на моем MACBOOK:MySQL ошибка при попытке открыть соединение MySQL

Предупреждение: mysql_connect(): [2002] Нет такого файла или каталог (попытка подключения через unix: ///var/mysql/mysql.sock) в /Users/Eugene/Sites/website/includes/database.php в строке 15. Предупреждение: mysql_connect(): нет такого файла или каталога в /Users/Eugene/Sites/website/includes/database.php в строке 15 Примечание: Неопределенная переменная: подключение в /Users/Evgeny/Sites/website/includes/database.php в строке 16 Не удалось подключиться к базе данных: такой файл или каталог отсутствует

Мои константы:

defined('DB_SERVER') ? null : define("DB_SERVER", "localhost"); 
defined('DB_USER') ? null : define("DB_USER", "eugene"); 
defined('DB_PASS') ? null : define("DB_PASS", "password"); // no comments please :) 
defined('DB_NAME') ? null : define("DB_NAME", "maindb"); 

Так я пытаюсь соединиться:

$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS); 
if(!$connection) // if no connection - die 
{ 
    die("Database connection failed: " . mysql_error()); 
} 
else // if there is a connection, then go and select a database 
{ 
    $db_select = mysql_select_db(DB_NAME, $connection); 
    if(!$db_select) // if no database selected - die 
    { 
     die("Database selection failed: " . mysql_error()); 
    } 
} 

Пожалуйста, помогите,

Спасибо заранее.

+0

Подтвердите, что вы можете подключиться через командную строку : – somedev

ответ

2

$ this-> connection = mysql_connect (DB_SERVER, DB_USER, DB_PASS);

Первой проблемой является то, что mysqld не использует тот же путь сокета, что и клиент. Попробуйте получить доступ через 127.0.0.1, затем запустите «показывать переменные», чтобы найти его там, где он вставил сокет, - соответствующим образом обновите свою конфигурацию PHP.

если (! $ Соединение)

Но вы кладете соединение в '$ this-> подключение' не '$' связи

+0

Спасибо за ваш ответ, это была опечатка на моей стороне, когда я писал вопрос. – Eugene

+0

изменение localhost до 127.0.0.1 исправлено это, спасибо! :) – Eugene

+1

BTW, этот _seems_ должен быть разрешимым (если у вас достаточно доступа), установив часть '[mysql_client]' 'my.cnf' (чаще всего находится в'/etc/mysql/my.cnf'). Где-то вдоль линии сокет по умолчанию был изменен с '/ var/mysql/mysql.sock' на'/var/mysql/mysqld.sock', и все ад сломался. Или вы можете удалить ссылку на сокет из этой части '[mysql_client]' целиком, чтобы заставить tcp (что и делает 127.0.0.1). – Wrikken

0

Вы устанавливаете переменную экземпляра через $this, но проверяете локальную переменную. Предполагая, что никаких других изменений не будет, ваш код должен выглядеть так:

$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS); 
if (!$connection) // if no connection - die 
{ 
    die("Database connection failed: " . mysql_error()); 
} 

Дай это попробовать!

+0

О, да, извините, я сделал опечатку, пишущий этот вопрос, все еще не работаю :( – Eugene

0

Вы смешиваете переменные класса и локальные переменные. $this->connection - это не то же самое, что и $connection.

0

Если u'are вызова $ соединение из класса просто поставьте if (! $ this-> connection) {.....} или если не просто поместите эту строку, если (! $ connection) {.....}

Смежные вопросы