“用户'''localhost'访问被拒绝到数据库'forge”随机出现

时间:2016-02-03 21:12:38

标签: php laravel laravel-5.2

我的数据库有搜索功能,但有时我收到此消息:

[2016-02-04 07:03:18] local.ERROR: PDOException: SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge' in C:\xampp\htdocs\reko\api\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:55
Stack trace:
#0 C:\xampp\htdocs\reko\api\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php(55): PDO->__construct('mysql:host=loca...', 'forge', '', Array)
...

在十个电话中的一个中,我收到了500条错误消息,但我不知道为什么。其他电话会给出正确的结果。

.ENV

APP_ENV=local
APP_DEBUG=true
APP_KEY=bJM6O0MnrIPaTNwKKOqNJkGinRDv1fnc

DB_HOST=localhost
DB_DATABASE=reko
DB_USERNAME=root
DB_PASSWORD=

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

搜索功能:

public function search(Modul $modul, Request $request)
{
    $question = Question::whereModulId($modul->id)
        ->where('value', 'LIKE', '%' . $request->get('keywords') . '%')
        ->with('tags')
        ->whereHas('exams', function ($query) use ($request) {
            $query->where('date', '>=', $request->get('year').'-01-01');
        });
    if (!$request->get('parent'))
        $question->where('type', '<>', 'parent');
    if (!$request->get('own'))
        $question->where('type', '<>', 'own');
    if (!$request->get('normal'))
        $question->where('type', '<>', 'normal');
    if ($request->get('answered'))
        $question->has('answers');
    return $question->paginate(10);
}

database.php中

'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

我没有修改database.php文件,所有其他调用都运行良好。

6 个答案:

答案 0 :(得分:1)

请运行此命令

php artisan clear:cache 

之后

php artisan config:cache

答案 1 :(得分:0)

这似乎涵盖了大部分答案:Laravel 5.2 not reading env file

请记住,不要像其中一位用户那样编辑核心文件。 只是做安全检查,清除缓存,应该工作。

希望它有所帮助。

作为一种变通方法,您可以使用所有权限添加到您的DB forge帐户。

答案 2 :(得分:0)

尝试php artisan clear:cache清除缓存并重新配置缓存php artisan config:cache它可能适合您。

答案 3 :(得分:0)

我曾经遇到过同样的问题。我发现我的默认连接设置为PostgreSQL而不是MySQL,因此我在database.php中更改了默认连接

'default' => env('DB_CONNECTION', 'mysql'),

否则,请在.env中添加以下内容

DB_CONNECTION=mysql

答案 4 :(得分:0)

req.params

尝试在.env文件中添加其余方法

答案 5 :(得分:0)

我们在托管时经常不得不面对这个错误。

您应该看到您已授予特权用户访问托管中数据库的权限。

第一

首先我需要查看数据库名称是否正确。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=zhara_demo
DB_USERNAME=zhara_admin
DB_PASSWORD=zhara@2021 

  • 尝试php artisan clear:cache清除缓存并重新配置
  • 您的缓存 php artisan config:cache 可能对您有用。