На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Ошибки соединения с базой данных 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, базы данных, laravel





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Математическая функция
Урок 6. Введение в свойства JavaScript: length


© upread.ru 2013-2021
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.