web-dev-qa-db-ja.com

Laravel 5データベースの問題

次のコマンドを使用して、laravel 5を正常にインストールしました。

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

php artisan -Vコマンドを使用して、インストールされたlaravelのバージョンも確認しました。出力は

Laravel Framework version 5.0-dev

それからapp/config/database.phpに行き、mysqlとしてdafault dbを与え、

'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)

しかし、システムでinstallng laravel 5にlaravel Homesteadを使用したことも、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

これらの問題を修正するにはどうすればよいですか?

24
Ajay Kulkarni

同様の問題が発生しました。 php artisan serveコマンドを使用してサーバーを起動し、.envファイルを編集し、変更を反映していないWebページを更新しました。

Webサーバーを停止し、.env.phpファイルを編集して、Webサーバーを再起動することで修正しました。

だから、それは.env.phpファイルのキャッシュの問題だと思います。

48

Laravel 5.1.1
GaneshとYordiが既に上で示した答えとして、しかし、私はそれらの両方を単一のものに結合しています。

問題
phpmyAdminでデータベースを作成しようとし、Laravelスキーマビルダーサービスを使用してスキーマ/テーブルを作成しようとすると、次のエラーが発生しました。

Connector.php行50のPDOException:SQLSTATE [HY000] [1045]ユーザー 'Homestead' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES)
Connector.php 50行目
at 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 '、' collat​​ion '=>' utf8_unicode_ci '、' prefix '=>' '、' strict '= > false、 'name' => 'mysql')、array( '0'、 '2'、 '0'、false、 '0'))MySqlConnector-> connect(array( 'driver '=>' mysql '、' Host '=>' localhost '、' database '=>' Homestead '、' username '=>' Homestead '、' password '=>' secret '、' charset '=>' utf8 '、' collat​​ion '=>' utf8_unicode_ci '、' prefix '=>' '、' strict '=> false、' name '=>' mysql ')).............

解決策1:
その後、問題がenvファイルにあることに気付き、envファイルの値を変更するのを忘れました。 .envファイルはlaravel 5ルートディレクトリにあり、ファイルを開いて次の値を変更します。

DB_DATABASE = localhost、
DB_USERNAME = databse-username、
DB_PASSWORD = databse-user-password

解決策2:
またはenv()なしでGanesh syasとしてdatabase.phpファイルを変更します。

    // 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,
    ]

両方のソリューションは私のために働いた。

8
MasoodUrRehman

Laravelは.envファイルに含まれる変数を使用しています。

From: http://laravel.com/docs/master/configuration

多くの場合、アプリケーションが実行されている環境に基づいて異なる設定値を使用すると便利です。たとえば、本番サーバーで使用するのとは異なるキャッシュドライバーをローカルで使用する場合があります。環境ベースの構成を使用すると簡単です。

Laravelは、Vance LucasのDotEnv PHPライブラリを使用します。新鮮なLaravel=インストールでは、アプリケーションのルートディレクトリに.env.exampleファイルが含まれます。 Composerを介してLaravelをインストールすると、このファイルの名前は自動的に.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
5
ajtrichards

同じ問題が発生しました。 「php artisan config:clear」コマンドを使用して古い構成キャッシュファイルをクリアした後、機能します。たぶんあなたはそれを試すことができます。

ちなみに、私の英語は上手ではありません。あなたが理解できることを願っています。

3
Eason Hung

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

これにより、構成ファイルのキャッシュがクリアされます。

今では間違いなく動作します!乾杯!

3
Sunil

Laravelは.envファイルを使用しているため、env()を使用せずに.envファイルを変更するか、database.phpファイルを変更します

'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,
    ]
3
Ganesh Jogam

Laravel config/database.phpは、データベース名、ユーザー名、パスワードに.envファイルを使用します。envファイルを変更してください

DB_Host = localhost

DB_DATABASE = my_project

DB_USERNAME = root

DB_PASSWORD = myproject

これを変更した後、以下のコマンドを実行します。

composer dump-autoload

その後、プロジェクトを実行します

pHPアーティザンサーブ

2
nitinsridar

私は非常に似た問題を抱えていて、どこを見るべきか分かりませんでした。キャッシュをクリアしたり、サーバーを再起動したりしました。見つかるまで...

Gitリポジトリで以前のバージョンに戻す前、以前はデータベースを使用するように設定されたセッションドライバー!愚かなことですが、それは必ずしもあなたが見る必要があるデータベース接続ではなく、代わりに最初に使用するデータベースを呼び出す場所です。

このページで私がやった方法で終わる誰かがこれが役立つと思うことを願っています。

1

はい、移行のインストールからphp artisan migrateまですべてがうまくいった同じ問題がありました。しかし、ユーザーを作成しようとすると、アクセスが拒否されました。

私が見つけた解決策は、サーバーを終了して再起動するためにctrl + dを閉じることでした。私は働いた... :)

0
Bastin Robin

私は同じ一水を持っている、ファイルを編集する.envルートフォルダーでデータベース構成を変更DB_DATABASEDB_USERNAMEDB_PASSWORD

0
vuhung3990

サーバーを再起動できますLaravelのキャッチエラーだと思うので、「php artisan serve」を使用してサーバーを再度実行し、ウェブサイトページを更新してください。

0
HRMadani

laravel。c./www/laravelなど)内で、app/config.Copy database.php(app/config/database.php)内に「local」という新しいディレクトリを作成します。これは動作します。私のために

0
user2338925