Проблема с базой данных Laravel 5

Я успешно установил laravel 5 с помощью этой команды:

composer create-project laravel/laravel test-laravel-5-project dev-develop --prefer-dist

Я даже проверил версию установленного laravel с помощью команды php artisan -V. Результат был

Laravel Framework version 5.0-dev

Затем я перешел к app/config/database.php, дал dafault db как mysql и дал конфигурации как

'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'Logintestfive'), 'username'=> env('DB_USERNAME', 'root'), 'password'=> env('DB_PASSWORD', 'manasa'), 'charset'=> 'utf-8', 'collation'=> 'utf-8_unicode_ci', prefix=> '', 'strict'=> false, ]

Затем я пошел на localhost:8000/auth/register, заполнил форму и отправил данные, и вот что я получил:

PDOException in Connector.php line 47: SQLSTATE[28000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)

Но я не использовал laravel homestead для установки laravel 5 в своей системе и не использовал vagrant для настройки laravel homestead. А мне вот так говорит:

in Connector.php line 47
at PDO->__construct('mysql:host=localhost;dbname=homestead', 'homestead', 'secret', array('0', '2', '0', false, '0')) in Connector.php line 47
at Connector->createConnection('mysql:host=localhost;dbname=homestead', array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql'), array('0', '2', '0', false, '0')) in MySqlConnector.php line 20
at MySqlConnector->connect(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) in compiled.php line 10545
at ConnectionFactory->createSingleConnection(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) in compiled.php line 10541
at ConnectionFactory->make(array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false), 'mysql') in compiled.php line 10459

Как я могу исправить эти проблемы?


person Ajay Kulkarni    schedule 29.01.2015    source источник
comment
Я получаю ту же ошибку при использовании драйвера pgsql с Laravel 5. Я использую homestead, где все должно быть настроено из коробки. Я использую настройки по умолчанию для файлов конфигурации .env и database.php. Однако эта проблема не возникает при использовании mysql.   -  person Gooshan    schedule 13.04.2015
comment
Вы можете попробовать запустить php artisan env, чтобы увидеть свою среду, если она локальная, вам следует обновить файл .env с правильными учетными данными, в противном случае он должен работать нормально так же, как у вас есть файл database.php.   -  person Dimitri Acosta    schedule 01.06.2015


Ответы (13)


У меня возникла аналогичная проблема. Я запустил свой сервер с помощью команды php artisan serve, отредактировал файл .env и обновил веб-страницу, которая не отразила никаких изменений!

Я исправил это, остановив веб-сервер, отредактировав файл .env.php и перезапустив веб-сервер!

Так что я предполагаю, что это проблема кэширования файла .env.php.

person Yordi Uytersprot    schedule 11.02.2015
comment
Благодарю вас! После часа чтения о том, как работают среды L5 в куче различных блогов и документации, вы, наконец, спасли мой день :-) - person FrostyX; 10.03.2015
comment
лол, эта проблема с кешем мучила меня всю ночь :( спасибо, это мне очень помогает - person Gabriel Rodrigues; 27.10.2015
comment
У меня было то же самое! Потратил на это несколько ночей :D Рад, что смог вам всем помочь. Всем приятного кодирования! ;) - person Yordi Uytersprot; 28.10.2015

Laravel 5.1.10
Как и ответы, уже данные Ганешем и Йорди выше, но я объединяю их обоих в один.

Проблема:
Когда я пытаюсь создать базу данных в phpmyAdmin и хочу создать схему/таблицу через службу построителя схем Laravel, я получаю следующие ошибки:

PDOException в строке 50 Connector.php: SQLSTATE[HY000] [1045] Доступ запрещен для пользователя 'homestead'@'localhost' (с использованием пароля: YES)
в строке 50 Connector.php
в PDO-> __construct('mysql:host=localhost;dbname=homestead', 'homestead', 'secret', array('0', '2', '0', false, '0'))
в Connector. php строка 50
at Connector->createConnection('mysql:host=localhost;dbname=homestead', array('driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict ' => false, 'name' => 'mysql'), array('0', '2', '0', false, '0')) в строке MySqlConnector.php 22 в MySqlConnector->connect(array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'homestead', 'username' => 'homestead', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'name' => 'mysql')) ............ .

Решение 1:
Затем я понял, что проблемы были в файле env, я забыл изменить значения в файле env. Файл .env находится в корневом каталоге laravel 5, откройте файл и измените следующие значения на свои.

DB_DATABASE = localhost,
DB_USERNAME = имя пользователя базы данных,
DB_PASSWORD = пароль пользователя базы данных

Решение 2:
Или измените файл database.php без env(), как Ganesh syas:

    // instead of this block
    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'your database name'),
        'username'  => env('DB_USERNAME', 'your database username'),
        'password'  => env('DB_PASSWORD', 'your database password'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

    // use this one

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'your database name',
        'username'  => 'your database username',
        'password'  => 'your database password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ]

Оба решения работали для меня.

person MasoodRehman    schedule 18.08.2015

Laravel использует переменные, содержащиеся в вашем файле .env.

Откуда: http://laravel.com/docs/master/configuration

Часто полезно иметь разные значения конфигурации в зависимости от среды, в которой работает приложение. Например, вы можете захотеть использовать локально другой драйвер кэша, чем на рабочем сервере. Это легко с помощью конфигурации на основе среды.

Laravel использует PHP-библиотеку DotEnv от Вэнса Лукаса. В новой установке Laravel корневой каталог вашего приложения будет содержать файл .env.example. Если вы устанавливаете Laravel через Composer, этот файл будет автоматически переименован в .env. В противном случае вам следует переименовать файл вручную.

Все переменные, перечисленные в этом файле, будут загружены в суперглобальную переменную $_ENV PHP, когда ваше приложение получит запрос. Вы можете использовать вспомогательную функцию env для извлечения значений из этих переменных. На самом деле, если вы просмотрите файлы конфигурации Laravel, вы заметите, что некоторые параметры уже используют этот помощник!

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

Если вы разрабатываете в команде, вы можете продолжать включать файл .env.example в свое приложение. Поместив замещающие значения в пример файла конфигурации, другие разработчики в вашей команде смогут четко видеть, какие переменные среды необходимы для запуска вашего приложения.

Файл .env по умолчанию выглядит примерно так:

APP_ENV=local
APP_DEBUG=true
APP_KEY=YOUR_KEY_HERE

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
person ajtrichards    schedule 29.01.2015
comment
Это было хорошее объяснение :) Я изменил свой файл .env следующим образом: APP_ENV=local APP_DEBUG=true APP_KEY=YOUR_KEY_HERE DB_HOST=localhost DB_DATABASE=loginlaravel5 DB_USERNAME=root DB_PASSWORD=manasa CACHE_DRIVER=file SESSION_DRIVER=file. Но у меня такая же ошибка - person Ajay Kulkarni; 29.01.2015
comment
Вы восстановили свой app/config/database.php для использования переменных, которые вы установили в файле .env? - person ajtrichards; 29.01.2015
comment
Да. Мой app/config/database.php такой: 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', ''), 'username'=> env('DB_USERNAME', ''), 'password'=> env('DB_PASSWORD', ''), 'charset'=> 'utf-8', 'collation'=> 'utf-8_unicode_ci', prefix=> '', 'strict'=> false, ] - person Ajay Kulkarni; 29.01.2015
comment
Должен быть другой .env файл, перезаписывающий ваши настройки. Если вы используете Linux или OS X, откройте терминал и измените каталог на путь установки и введите: nano .env*, чтобы открыть все файлы env, и вы сможете увидеть, какой из них он использует. - person ajtrichards; 29.01.2015
comment
Я использую linux OS, сделал vim .env* и получил 2 файла: .env и .env.example. Я также добавил конфигурации БД в .env.example. Но у меня такая же ошибка - person Ajay Kulkarni; 29.01.2015
comment
Была такая же ошибка. Проверил мой .env и возникла проблема. Кто-то действительно должен оставить комментарий в файле database.php. В L4 все, что вам нужно было сделать, это отредактировать этот файл. Теперь он выглядит так же, вы редактируете его, и ничего не происходит... - person hfingler; 08.02.2015

У меня та же проблема. После того, как я использую команду «php artisan config:clear», чтобы очистить старый файл кеша конфигурации, он может работать. Может быть, вы можете попробовать это.

Кстати, мой английский не очень хорош, надеюсь, вы понимаете.

person Eason Hung    schedule 15.02.2015

Laravel использует файл .env, поэтому измените файл .env или измените файл database.php без env().

'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'your database name',
        'username'  => 'your database username',
        'password'  => 'your database password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ]
person Ganesh Jogam    schedule 20.03.2015

В Config->database.php

'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'DBName'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => null,
    ],

В файле .env:

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=DBName
DB_USERNAME=root
DB_PASSWORD=

Закройте сервер приложений laravel и снова перезапустите его для очистки кеша.

  php artisan serve

Или вы можете сделать:

  php artisan config:clear

Это очистит кеш в файлах конфигурации.

Теперь точно получится! Ваше здоровье!

person Sunil    schedule 28.03.2016

Laravel config/database.php использует файл .env для имени базы данных, имени пользователя и пароля. Пожалуйста, измените файл .env

DB_HOST=локальный хост

DB_DATABASE=мой_проект

DB_USERNAME=корень

DB_PASSWORD=мойпроект

После изменения этого запустите следующую команду:

композитор дамп-автозагрузка

затем запустите свой проект

php ремесленник служить

person nitinsridar    schedule 10.05.2016

У меня была очень похожая проблема, и я не знал, где искать. Я очистил кэш, перезапустил сервер и т. Д., Никакой радости. Пока не нашел...

До того, как я вернулся к предыдущей версии репозитория Git, у меня был драйвер сеанса, настроенный на использование базы данных! Глупо, но вам нужно смотреть не обязательно на соединение с базой данных, а на то, где вы вызываете базу данных, которая будет использоваться в первую очередь.

Я надеюсь, что кто-то, кто окажется на этой странице так же, как и я, найдет это полезным.

person Barnabas Kecskes    schedule 13.03.2015
comment
@HassanSaqib Если вы не используете базу данных, но все равно сталкиваетесь с ошибкой подключения к базе данных, возможно, ваш драйвер сеанса настроен на использование базы данных! Это то, что обмануло меня в той же ошибке, что и в вопросе. Если это так, установите его, например, в «файл», и все будет в порядке. - person Barnabas Kecskes; 06.05.2015

у меня такая же проблема, отредактируйте файл .env в корневой папке и измените конфигурацию базы данных DB_DATABASE DB_USERNAME DB_PASSWORD

person vuhung3990    schedule 01.04.2015

Внутри вашего laravel, например. c:/www/laravel, создайте новый каталог с именем «local» внутри app/config.Copy database.php (app/config/database.php). Это работает для меня

person Community    schedule 04.06.2015

Да, у меня были те же проблемы, когда все прошло хорошо, от установки миграции до миграции php artisan. Но когда я попытался создать пользователя, доступ был запрещен.

Решение, которое я нашел, состояло в том, чтобы закрыть ctrl + d, чтобы завершить работу сервера и перезапустить его. Я работал... :)

person Bastin Robin    schedule 30.12.2015

вы можете перезапустить свой сервер, я думаю, это ошибка отлова в Laravel, поэтому снова запустите свой сервер с помощью «php artisan serve» и обновите страницу своего веб-сайта. Все в порядке.

person HRMadani    schedule 29.07.2016

для меня

sudo service apache2 reload

сделал работу

person Grigoreas P.    schedule 31.05.2016