Я пытаюсь подключиться к моей базе данных MySQL через терминал на моем Apple (с PHP).
Вчера все работало нормально, а теперь я внезапно получаю ошибку в названии.
Сценарий работает, когда я использую свой браузер для его запуска (у меня установлен XAMPP), но Терминал отказывается подключаться к БД.
Вот файл, который я включаю для подключения (скрипт работает, когда я его не включаю, но затем он не подключается к БД):
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("FNB1C_data") or die(mysql_error());
?>
Это должно работать, так как он работает с моим браузером.
Использование команды I в терминале есть php scriptname.php
.
localhost
сокет работать, и он может быть важен, если вы не хотите, чтобы дополнительные издержки отправлялись на маршрутизатор до получения доступа к базе данных.cd /tmp
а потом:sudo ln -s /var/run/mysqld/mysqld.sock mysql.sock
.У меня тоже была эта ошибка, но я мог ее исправить только с помощью предложения здесь .
Подводя итог, используйте:
Вместо того:
Причина в том, что «localhost» - это специальное имя для драйвера MySQL, заставляющее его использовать сокет UNIX для подключения к MySQL вместо сокета TCP.
источник
hosts
файл, он может отсутствовать или испортитьсяУ меня была такая же проблема, и вот как я ее исправил:
У меня было это, и это не сработало:
Я сделал это, и это сработало:
Вместо использования сервера MySQL я подключился напрямую к Unix Socket. Работал на меня.
источник
Сокет MySQL, как правило, находится в
/tmp/mysql.sock
или/var/mysql/mysql.sock
, но, вероятно, PHP выглядит не в том месте.Проверьте, где ваша розетка с:
Когда updatedb прекращается:
Затем найдите ваш php.ini:
это выведет что-то вроде:
Отредактируйте свой php.ini
Измените строки:
где /tmp/mysql.sock - это путь к вашему сокету.
Сохраните ваши изменения и выйдите из ESC + SHIFT: x
Перезапустите Apache
источник
php.ini.default
вphp.ini
.sudo apachectl restart
Я работаю на XAMPP в Mac OS X, и решение Брайана Лоу, приведенное выше, работало с небольшой модификацией .
Файл mysql.sock находится в папке "/ Applications / xampp / xamppfiles / var / mysql /". Поэтому пришлось связать его как в / tmp, так и / var / mysql. Я не проверял, какой из них используется в командной строке PHP, но это помогло, поэтому я счастлив :-)
источник
Mac OS X EL Capitan + MAMP Pro Сделайте это
Тогда сделай это
Надеюсь, это сэкономит вам время.
источник
mysql.dock
в то,/tmp
что это решило. Спасибо!Причина в том, что php не может найти правильный путь
mysql.sock
.Пожалуйста, убедитесь, что ваш mysql запущен первым.
Затем, пожалуйста, подтвердите, что путь
mysql.sock
расположен, например,/tmp/mysql.sock
затем добавьте эту строку пути в php.ini:
Наконец, перезапустите Apache.
источник
Когда вы сталкиваетесь со следующей проблемой:
Установите значение "mysql.default_socket" в вашем
/etc/php.ini
кЗатем перезапустите веб-сервис в админке сервера.
источник
Исправлена ошибка с надвигающимся сокетом 2002 года, которая связывает, где MySQL размещает сокет и где OSX считает, что это должно быть, MySQL помещает его в / tmp, а OSX ищет его в / var / mysql, сокет - это тип файла, который позволяет клиенту mysql / сервер связи.
а потом
источник: http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/
источник
Другое решение состоит в том, чтобы исправить местоположение сокета в файле конфигурации php.ini следующим образом:
Конечно, символическая ссылка тоже работает, поэтому вы предпочитаете, какую из них изменить.
источник
Когда вы устанавливаете php53-mysql, используя порт, он возвращает следующее сообщение, которое является решением этой проблемы:
источник
у меня была та же проблема
[PDOException] SQLSTATE [HY000] [2002] Нет такого файла или каталога
[ErrorException] Предупреждение: PDO :: __ construct (): [2002] Нет такого файла или каталога (пытается подключиться через unix: ///var/mysql/mysql.sock) в… htdocs / Symfony / vendor / doctrine-dbal / Библиотека / Doctrine / DBAL / Водитель / PDOConnection.php
Таким образом, решение заключается в создании символической ссылки на файл sock, что решает проблему. Сделайте следующее, чтобы решить это:
$ sudo mkdir / private / var / mysql /
$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /private/var/mysql/mysql.sock
источник: http://www.reecefowell.com/2012/07/21/symfony2-cli-does-not-connect-to-mysql- while-browser-works-fine/
источник
Я получил те же ошибки. Mysql работал как отдельное приложение до того, как я запустил phpMyAdmin.
Я просто остановил MySQL Затем sudo / Applications / XAMPP / xamppfiles / xampp stop sudo / Applications / XAMPP / xamppfiles / xampp start
Все работало нормально
источник
У меня просто была эта проблема, но она появилась только при загрузке определенных страниц (другие страницы работали нормально). Оказалось, что я звонил в MySQL после того, как закрыл соединение с
mysql_close()
. Итак, как сказал @brucenan: убедитесь, что MySQL работает, когда вы его вызываете .источник
Вы можете сделать это, просто добавив псевдоним MAMP php на терминал Apple:
Пример:
> phpmamp - v
Теперь вы можете запустить что-то вроде:
> phpmamp scriptname.php
Примечание. Это будет применяться только для текущего сеанса терминала.
источник
Поскольку вы можете использовать MAMP, либо измените ваш порт на 3306 по умолчанию, либо используйте 127.0.0.1 в файле database.php
Или с настройками по умолчанию:
источник
Клиент mySQL по умолчанию пытается подключиться через локальный файл, называемый сокетом, вместо подключения к адресу обратной связи (127.0.0.1) для localhost.
Расположение по умолчанию этого файла сокета, по крайней мере в OSX, -
/tmp/mysql.sock
.БЫСТРОЕ, МЕНЬШЕ ЭЛЕГАНТНОЕ РЕШЕНИЕ
Создайте символическую ссылку, чтобы обмануть ОС и найти правильный сокет.
Правильное решение
Измените путь сокета, определенный в
startMysql.sh
файле в/Applications/MAMP/bin
.источник