Ответ 1
Вам нужно очистить кеш (например, ваша старая конфигурация находится в вашем кеш файле):
php artisan cache:clear
Ошибка pdo возникает из-за того, что Laravel использует драйвер pdo для подключения к mysql
Я использую 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?
Я нашел эту строку
protected $table = 'users';
в моем файле user.php, и я изменил его на
protected $table = 'user';
, потому что таблица в моей базе данных user
not users
Я написал это в своем маршруте
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
Заранее спасибо
Вам нужно очистить кеш (например, ваша старая конфигурация находится в вашем кеш файле):
php artisan cache:clear
Ошибка pdo возникает из-за того, что Laravel использует драйвер pdo для подключения к mysql
php artisan cache:clear
php artisan migrate:install
Надеюсь, ваша проблема будет решена.
Похоже, что у вас есть файл конфигурации, специфичный для конкретной среды, который переопределяет настройки базы данных по умолчанию. Возможно app/config/local/database.php.
Используя phpMyAdmin (или что вы предпочитаете), я просто создал базу данных под названием "forge" и повторно запустил команду php artisan migrate
, и все заработало.
Примечание. Как только это случилось, у меня случайно было место перед именем моей базы данных, например mydatabase
вместо mydatabase
, phpmyadmin не отображает пробел, но если вы запустите его из интерфейса командной строки mysql, например mysql -u the_user -p
, затем show databases
, вы сможете увидеть пробел.
У меня была такая же проблема... Если вы установили имя вашей БД и имя пользователя и правильно указали в файле .env, и он все еще не работает, запустите код раздувания в терминале: (это очистит кеши, оставшиеся от предыдущих приложений)
php artisan cache:clear
и затем снова запустите команду php artisan serve
(если вы ее запускаете, остановитесь и запустите ее снова)
Общался с этой проблемой несколько раз, обратите внимание, что я запускаю laravel через Vagrant. Итак, вот исправления, которые работают для меня:
Вы можете попробовать перезагрузить свой сервер вместо бродяг (т.е. MAMP)
ОК, найдено решение.
В файле 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'),
Убедитесь, что в папке laravel нет дублированного файла .env
. Если он существует, удалите его. Сохраняйте только файл .env
.
Вы должны создать базу данных, прежде чем указывать на нее.. Создать базу данных с помощью phpmyadmin или cmd
иногда это потому, что 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=
У меня была та же проблема, и я решил эту ошибку.
ДО:
$conn= mysqli_connect($server_name, $mysql_Username, $mysql_Password, $db_name);
ПОСЛЕ:
Просто добавлено ""
;
$conn= "mysqli_connect($server_name, $mysql_Username, $mysql_Password, $db_name)";