it-roy-ru.com

Laravel PDOException SQLSTATE [HY000] [1049] Неизвестная база данных "кузница"

Я использую Laravel для подключения к базе данных MySQL.

Я получил это исключение:

PDOException
SQLSTATE[HY000] [1049] Unknown database 'forge'

и это мой config.database.php

'mysql' => array(
            'driver'    => 'mysql',
            'Host'      => 'localhost',
            'database'  => 'laravel',
            'username'  => 'Anastasie',
            'password'  => '[email protected]',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

почему ошибка ссылается на базу данных PDO? и почему имя базы данных forge? Я уже изменил это. 

Должен ли я что-то сказать Laravel, что я использую базу данных MySQL?

Обновление 1

Я нашел эту строку protected $table = 'users'; в моем файле user.php и изменил ее на protected $table = 'user';, потому что таблица в моей базе данных user не users

Обновление 2

Я написал это в моем маршруте

Route::resource('users', 'UsersController');

и я добавил UsersController.php в моей папке контроллеров

и внутри UsersController.php у меня есть это:

class UsersController extends BaseController {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        $users = User::all();
        return View::make('users.index', compact('users'));
    }

и я называю этот URL http://localhost:8082/laravel/public/users/

Я использую Windows 7 с Laravel 4.2

Заранее спасибо

16
Anastasie Laurent

Вы должны очистить кеш так (потому что ваша старая конфигурация находится в вашем файле кеша):

php artisan cache:clear

Ошибка pdo происходит из-за того, что Laravel использует драйвер pdo для подключения к mysql

10
Freelancer
  1. Сначала вы должны создать соответствующую базу данных.
  2. Тогда: php artisan cache:clear 
  3. Теперь запустите php artisan migrate:install

Надеюсь, что ваша проблема будет решена.

6
user5320639

Используя phpMyAdmin (или что вы предпочитаете), я просто создал базу данных под названием «forge» и повторно запустил команду php artisan migrate, и все заработало.

3
Joey Garcia

Похоже, у вас есть файл конфигурации для конкретной среды, который переопределяет настройки базы данных по умолчанию. Возможно app/config/local/database.php .

3
Martin Bean

Примечание. Как только получилось, что у меня случайно был пробел перед именем базы данных, например mydatabase вместо mydatabase, phpmyadmin не будет показывать пробел, но если вы запустите его из интерфейса командной строки mysql, такого как mysql -u the_user -p, затем show databases, вы смогу увидеть пространство.

2
dud3

иногда это потому, что DB_CONNECTION = mysql и вы хотите использовать базу данных sqlite . Решением этой проблемы является создание DB_CONNECTION = sqlite. Надеюсь, поможет

DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=C:\xampp\htdocs\jbtibl\database\database.sqlite
DB_USERNAME=root
DB_PASSWORD=
0
Izaz Khan

ОК, нашел решение. 

В файле database.php по умолчанию добавляется часть «mysql»:

 'mysql' => [
            'driver' => 'mysql',
            'Host' => env('DB_Host', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

все, что вам нужно сделать, это изменить значения:

'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),

по имени вашей базы данных (вы должны создать его, если у вас его нет) и по этому имени пользователя базы данных

как это

'database' => env('DB_DATABASE', 'MyDatabase'),
'username' => env('DB_USERNAME', 'MyUsername'),
0
Mistura

Убедитесь, что в папке laravel нет дубликата .env-файла. Если он существует, удалите его. Сохраняйте только файл .env. 

0
Farhad

Несколько раз сталкивался с этой проблемой, заметьте, что я запускаю laravel через Vagrant. Итак, вот исправления, которые работают для меня:

  • Попробуйте еще раз несколько раз (обновить страницу)
  • Перезагрузка бродяги (vagrant reload)

Вы можете попробовать перезагрузить свой сервер вместо vagrant (например, MAMP)

0
michaeltintiuc