Ошибки соединения с базой данных Laravel, или чудес не бывает
После установки XAMPP начались проблемы с базой данных. Сначала оказалось, что у меня на компьютере уже есть Mysql (что, в общем-то не явилось новостью) – и она уже висит на порту 3306. Вылезшие ошибки:
Found Path: "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.5\my.ini" MySQL 6:11:15 [mysql] Expected Path: d:\xampp\mysql\bin\mysqld.exe --defaults-file=d:\xampp\mysql\bin\my.ini mysqlРешается несложно – создаем новую службу mysqweb к примеру, в которой запускаем mysqld.exe XAMPP и запускаем её вручную. Также не забываем заменить порты в файлах конфигов my.ini и php.ini
mysqli.default_port=3307Отлично, теперь phpMyAdmin работает и тестовое подключение тоже:
$conn = new mysqli("localhost", "forge", "forge", "forge", 3307); if ($conn->connect_error) { die("Ошибка: невозможно подключиться: " . $conn->connect_error); }А вот
php artisan migrateВсе также вызывает ошибки
Причем как вы видите, мы поменяли .env и database.php настройки. Думаем, что дальше. Попробуем для начала получить полный текст ошибка – а то, как вы видите, в консоли у меня кириллица не хочет отображаться (и всякие танцы с бубнами конкретно в этом случае ничего не дают) – так что пишем ошибку в файл примерно так
$file = 'err.txt'; file_put_contents($file, $e->getMessage);В файле появилось
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен.Ну что ж, понятно что проблема в адресе. Пробуем менять его всячески – меняем на 127.0.0.1. Ни в какую не получается. Может, кэш не обновляется? Пробуем разное:
php artisan config:clear php artisan cache:clear php artisan config:cache composer dump-autoloadНет, ничего. Мистика? Да не может такого быть. Лезем снова в файл vendor\laravel\framework\src\Illuminate\Database\Connection.php, добавляем вывод:
var_dump (config('database.connections'));и начинаем его построчно изучать. И вот тут находим – переменная DB_HOST имеет значение mysql! Снова лезем в .env и видим следующую картину:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_HOST=mysql DB_PORT=3307 DB_DATABASE=forge DB_USERNAME=forge DB_PASSWORD=forgeМда. Вторая строка DB_HOST перебивает (точнее вставляет новое значение) локалхост. Просто убираем DB_HOST=mysql, очищаем кэш и все отлично запускается.
Мораль проста: чудеса может и бывают в программировании, но все же лучше еще раз проверить файл конфига.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.