Подтвердить что ты не робот

Laravel PDOException SQLSTATE [HY000] [1049] Неизвестная база данных 'forge'

Я использую 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 not 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

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

4b9b3361

Ответ 1

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

php artisan cache:clear

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

Ответ 2

  • Сначала вы должны создать свою соответствующую базу данных.
  • Затем: php artisan cache:clear
  • Теперь запустите php artisan migrate:install

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

У меня была такая же проблема... Если вы установили имя вашей БД и имя пользователя и правильно указали в файле .env, и он все еще не работает, запустите код раздувания в терминале: (это очистит кеши, оставшиеся от предыдущих приложений)

php artisan cache:clear

и затем снова запустите команду php artisan serve (если вы ее запускаете, остановитесь и запустите ее снова)

Ответ 7

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

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

Вы можете попробовать перезагрузить свой сервер вместо бродяг (т.е. MAMP)

Ответ 8

ОК, найдено решение.

В файле 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'),

Ответ 9

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

Ответ 10

Вы должны создать базу данных, прежде чем указывать на нее.. Создать базу данных с помощью phpmyadmin или cmd

Ответ 11

иногда это потому, что 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=

Ответ 12

У меня была та же проблема, и я решил эту ошибку.

ДО:

$conn= mysqli_connect($server_name, $mysql_Username, $mysql_Password, $db_name);

ПОСЛЕ:
Просто добавлено "";

$conn= "mysqli_connect($server_name, $mysql_Username, $mysql_Password, $db_name)";