MySQLデータベースへの接続にLaravelを使用しています。
私はこの例外を受け取りました:
PDOException
SQLSTATE[HY000] [1049] Unknown database 'forge'
これは私のconfig.database.phpです
'mysql' => array(
'driver' => 'mysql',
'Host' => 'localhost',
'database' => 'laravel',
'username' => 'Anastasie',
'password' => 'A@Laurent',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
エラーがPDO
データベースを参照しているのはなぜですか?そして、なぜforge
データベース名ですか?すでに変更しました。
MySQLデータベースを使用していることをLaravelに伝えるために何かする必要がありますか?
User.phpファイルでこの行protected $table = 'users';
を見つけました。データベースのテーブルがuser
ではなくusers
であるため、protected $table = 'user';
に変更しました。
ルートにこれを書きました
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/
と呼びます
Laravel 4.2でWindows 7を使用しています
前もって感謝します
そのようなキャッシュをクリアする必要があります(古い構成がキャッシュファイルにあるため)。
php artisan cache:clear
Pdoエラーは、ファクトLaravel= mysqlに接続するためにpdoドライバーを使用してください
php artisan cache:clear
php artisan migrate:install
あなたの問題が解決されることを願っています。
PhpMyAdmin(またはお好みのもの)を使用して、「forge」というデータベースを作成し、php artisan migrate
コマンドとそれはすべて働いた。
注:mydatabase
の代わりにmydatabase
などのデータベース名の前に誤ってスペースがあった場合、phpmyadminはスペースを表示しませんが、コマンドラインインターフェイスから実行するとmysql -u the_user -p
、show databases
などのmysqlの場合、スペースを確認できます。
デフォルトのデータベース設定を上書きする環境固有の設定ファイルがあるように聞こえます。おそらくapp/config/local/database.php。
私は同じ問題を抱えていました...あなたがあなたのDB名とユーザー名を設定し、.envファイルを正しく渡し、それがまだ動作しない場合、ターミナルでブローコードを実行します:(これは以前のアプリから残ったキャッシュを消去します)
php artisan cache:clear
そして、コマンドphp artisan serve
を再度実行します(実行している場合は停止してから再度実行します)
時々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=
OK、解決策が見つかりました。
ファイル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
ファイルのみを保持してください。
この問題に何度も遭遇しましたが、Vagrantを介してlaravelを実行していることに注意してください。
浮浪者(つまり、MAMP)の代わりにサーバーをリロードしてみてください。