Illuminate \ Database \ QueryException(2002)SQLSTATE [HY000] [2002]没有这样的文件或目录(SQL:从* rents中选择*)

时间:2018-08-26 16:50:13

标签: php mysql laravel laravel-5.4

我正在尝试将Laravel项目连接到现有数据库。

我遵循了Eloquent Model Conventions;但是,我仍然遇到以下错误:

  

Illuminate \ Database \ QueryException(2002)SQLSTATE [HY000] [2002]   没有这样的文件或目录(SQL:从rents中选择*)

这是我的代码:

web.php

Route::get('/', [
    'uses' => 'RentsController@index'
    ]);

RentsController.php

<?php

namespace App\Http\Controllers;

use App\Rent;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;


class RentsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {   
        $rents = Rent::all();
        return view('welcome', ['rents' => $rents]);
    }

    ...
}

Rent.php

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;


class Rent extends Model {
    protected $table = 'rents';
}

welcome.blade.php

<!doctype html>
<html>
    <head>
    </head>
    <body>
        <ul>
            @foreach ($rents as $rent)
                <li>{{ $rent->title }}</li>
            @endforeach
        </ul>
    </body>
</html>

*可能存在问题的一件事是,我在本地运行页面(php artisan服务),而数据库是真实且在线的。那会引起问题吗?如果是这样,有什么办法解决吗? *

任何想法可能是什么问题?我正确设置了.env文件,因为它可以在另一页上工作。但是,在此表上,似乎无法找到“租金”表。

谢谢!

1 个答案:

答案 0 :(得分:1)

所有人,谢谢您的帮助!

我知道了。问题出在DB_HOST。

我正在本地运行页面(即php artisan服务),并且数据库在线。我无权访问本地计算机上的数据库。这就是为什么它无法连接。

因此,我将其放置到实际主机中,而不是DB_HOST = localhost或127.0.0.1。

例如:

DB_HOST=hostname_from_server
DB_PORT=3306
DB_DATABASE=database_name_on_server
DB_USERNAME=username_on_server
DB_PASSWORD=password_on_server

然后,我需要清除终端中的缓存:

php artisan config:cache
php artisan cache:clear

向@ AddWeb Solution Pvt Ltd寻求帮助!