Laravel 5数据库问题

时间:2015-01-29 07:54:44

标签: php mysql 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,给了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, ]

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

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

但我在我的系统中既未使用laravel homestead来安装la lavel 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

如何解决这些问题?

13 个答案:

答案 0 :(得分:48)

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

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

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

答案 1 :(得分:8)

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

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

  

Connector.php第50行中的PDOException:SQLSTATE [HY000] [1045]访问被拒绝用户' homestead' localhost' (使用密码:是)
  在Connector.php第50行中   在PDO-> __ construct(' mysql:host = localhost; dbname = homestead',' homestead',' secret',array(' 0&# 39;,' 2',' 0',false,' 0'))
  在Connector.php第50行中    在Connector-> createConnection(' mysql:host = localhost; dbname = homestead',array(' driver' =>' mysql','主持人' =>' localhost','数据库' =>'家园','用户名' =>&#39 ;宅基地','密码' =>'秘密',' charset' =>' utf8','整理' =>' utf8_unicode_ci','前缀' =>'','严格' => false,& #39;姓名' =>' mysql'),数组(' 0',' 2',' 0',false ,' 0'))在MySqlConnector.php第22行       at MySqlConnector-> connect(array(' driver' =>' mysql',' host' =>' localhost',& #39;数据库' =>'家园','用户名' =>'家园','密码' => ' secret',' charset' =>' utf8',' collat​​ion' =>' utf8_unicode_ci',& #39;前缀' =>'','严格' => false,' name' =>' mysql&#39 ;)).............

解决方案1:
然后我意识到问题出在env文件中,我忘了更改env文件中的值。 .env文件位于laravel 5根目录中 打开文件并使用您的文件更改以下值

DB_DATABASE = localhost,
DB_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,
    ]

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

答案 2 :(得分: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

答案 3 :(得分:3)

我遇到了同样的问题。在我使用命令“php artisan config:clear”清除旧配置缓存文件后,它可以正常工作。也许你可以尝试一下。

顺便说一下,我的英语不好,希望你能理解。

答案 4 :(得分:3)

Laravel正在使用.env文件,因此更改.env文件或更改database.php文件而不使用env()

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

答案 5 :(得分:3)

在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

这将清除配置文件中的缓存。

现在它肯定会奏效!干杯!

答案 6 :(得分:2)

Laravel config / database.php使用.env文件作为数据库名称,用户名asnd密码,请更改.env文件

DB_HOST =本地主机

DB_DATABASE = MY_PROJECT

DB_USERNAME =根

DB_PASSWORD = myproject的

更改此操作后,运行以下命令:

composer dump-autoload

然后运行你的项目

php artisan serve

答案 7 :(得分:1)

我有一个非常相似的问题,并不知道在哪里看。我清除缓存,重启服务器等,没有快乐。直到我找到它......

在我恢复到Git repo上的先前版本之前,我曾经将我的会话驱动程序设置为使用数据库!愚蠢的事情,但它不一定是您需要查看的数据库连接,而是您在第一时间调用数据库的位置。

我希望以我的方式结束此页面的人会觉得这很有帮助。

答案 8 :(得分:0)

我有相同的issui,在根文件夹上编辑文件.env并更改数据库配置DB_DATABASE DB_USERNAME DB_PASSWORD

答案 9 :(得分:0)

在你的laravel里面,例如。 c:/ www / laravel,在app / config.Copy database.php(app / config / database.php)中创建一个名为'local'的新目录。这对我有用

答案 10 :(得分:0)

是的,我有同样的问题,从迁移安装到php artisan migrate,一切顺利。但是当我试图创建一个用户时,拒绝访问。

我找到的解决方法是关闭ctrl + d以终止服务器并重新启动。我工作过......:)

答案 11 :(得分:0)

您可以重新启动服务器 我认为是Laravel中的一个错误,所以再次运行你的服务器" php artisan serve"并刷新您的网站页面确定。

答案 12 :(得分:-1)

对我来说

2**(32-1) - 1 = 2147483647

完成了这项工作