Laravel 5 数据库问题

Laravel 5 database issue

我已经使用以下命令成功安装了 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并将配置设置为

'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 在我的系统中安装 laravel 5 也没有使用 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

我该如何解决这些问题?

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

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

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

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

我遇到了同样的问题。我用命令"php artisan config:clear"清除旧的配置缓存文件后,就可以了。也许你可以试试。

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

我有一个非常相似的问题,但不知道去哪里找。我清除缓存,重新启动服务器等,没有任何乐趣。直到我找到它...

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

我希望像我一样最终访问此页面的人会觉得这很有帮助。

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

我有同样的问题,编辑根文件夹中的文件 .env 并更改数据库配置 DB_DATABASE DB_USERNAME DB_PASSWORD

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

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

问题
当我尝试在 phpmyAdmin 中创建数据库并想通过 Laravel 架构构建器服务创建 schema/table 时,我收到以下错误:

PDOException in Connector.php line 50: SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost' (using password: YES)
in Connector.php line 50
at PDO->__construct('mysql:host=localhost;dbname=homestead', 'homestead', 'secret', array('0', '2', '0', false, '0'))
in Connector.php line 50
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 22 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')) .............

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

DB_DATABASE = 本地主机,
DB_USERNAME = 数据库用户名,
DB_PASSWORD = 数据库用户密码

方案二:
或者在没有 env() 的 database.php 文件中更改为 Ganesh syas:

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

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

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

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

在配置中->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

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

现在肯定可以了!干杯!

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

DB_HOST=本地主机

DB_DATABASE=my_project

DB_USERNAME=root

DB_PASSWORD=我的项目

更改此 运行 以下命令后:

作曲家dump-autoload

然后运行你的项目

php artisan 服务

对我来说

sudo service apache2 reload

完成任务

您可以重新启动您的服务器 我认为是 Laravel 中的捕获错误,所以 运行 您的服务器再次使用 "php artisan serve" 并刷新您的网站页面没关系。