Laravel 5数据库问题

Aja*_*rni 24 php mysql laravel-5

我使用此命令成功安装了laravel 5:

composer create-project laravel/laravel test-laravel-5-project dev-develop --prefer-dist
Run Code Online (Sandbox Code Playgroud)

我甚至使用php artisan -V命令验证了已安装的laravel的版本.输出是

Laravel Framework version 5.0-dev
Run Code Online (Sandbox Code Playgroud)

然后我去了app/config/database.php,给了dafault db作为mysql并给出了配置

'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, ]
Run Code Online (Sandbox Code Playgroud)

然后我去localhost:8000/auth/register填写表格并提交数据,这是我得到的错误:

PDOException in Connector.php line 47: SQLSTATE[28000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)
Run Code Online (Sandbox Code Playgroud)

但是我laravel homestead在我的系统中既没有用于安装laravel 5也没用于vagrant设置laravel宅基地.它告诉我这样:

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
Run Code Online (Sandbox Code Playgroud)

我该如何解决这些问题?

Yor*_*rot 48

我遇到了类似的问题.我使用php artisan serve命令启动了我的服务器,并编辑了.env文件并刷新了没有反映任何更改的网页!

我通过停止网络服务器,编辑.env.php文件并重新启动网络服务器来修复它!

所以我猜这是.env.php文件的缓存问题.


Mas*_*man 8

Laravel 5.1.10
正如Ganesh和Yordi已经给出的答案,但我将它们两者合二为一.

问题:
当我尝试在phpmyAdmin中创建数据库并希望通过Laravel Schema构建器服务创建模式/表时,我收到以下错误:

Connector.php第50行中的PDOException:SQLSTATE [HY000] [1045] PDO
中Connector.php第50行的用户'homestead'@'localhost'(使用密码:YES)拒绝访问
- > __ construct('mysql:host = localhost
Connector.php第50行中的; dbname = homestead','homestead','secret',array('0','2','0',false,'0'))
在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'),数组('0','2','0',false,'0'))MySqlConnector.php第22行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,
    ]
Run Code Online (Sandbox Code Playgroud)

这两种解决方案对我有用.


ajt*_*rds 5

Laravel正在使用您.env文件中包含的变量.

来自: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
Run Code Online (Sandbox Code Playgroud)