Laravel 8 - 找不到驱动程序: Illuminate\Database\QueryException找不到驱动程序(SQL: select * from `list`)

9

我在我的Linux Mint 20上安装了Laravel 8用于个人实验,所以我对Laravel的新版本不熟悉。我搜索了许多资源,以了解如何使用CRUD方法显示包含来自MySQL数据库的数据的表格。

但是当我尝试使用CRUD方法显示表格时,出现了以下错误:

Illuminate\Database\QueryException could not find driver (SQL: select * from list)

在localhost:8000/home/tabel中。

我尝试从修复.env文件、控制器文件、blade文件和web.php文件来解决这个问题,但仍然出现错误。

这是我更改的配置文件:

.env

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=people
DB_USERNAME=root
DB_PASSWORD=

homeController.php

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class homeController extends Controller
{
    public function home()
    {
        return "home";
    }

    public function tabel()
    {
        $tabelku = DB::table('list')->get();
        return view('tabel', ['people' => $tabelku]);
    }

}

tabel.blade.php

<!DOCTYPE html>
<html>

    <head>
        <title>Table</title>
    </head>

    <body>
        <div align="center">
            <table border = "1">
                <tr>
                    <th>No</th>
                    <th>Name</th>
                    <th>Age</th>
                    <th>Hobby</th>
                </tr>

                @foreach($tabelku as $t)
                <tr>
                    <th>{{$t->no}}</th>
                    <th>{{$t->name}}</th>
                    <th>{{$t->age}}</th>
                    <th>{{$t->hobby}}</th>
                </tr>
                @endforeach
            </table>
        </div>
    </body>
</html>

然后是 web.php

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('/hello', function () {
    return 'Halo Dunia';
});

Route::get('/home','homeController@home');

Route::get('/home/tabel','homeController@tabel');

这是我用来展示CRUD方法表格的数据库和表格 -> enter image description here

我使用XAMPP作为MySQL数据库。

可以有人解释一下为什么出现这个错误,并给出修复方法吗?


1
"could not find driver" 意味着 PHP 找不到 mysql / pdo_mysql 扩展。您需要在 php.ini 中启用它。 - darthsoup
3个回答

27

只需安装适当的PHP-MySQL驱动程序:

# default
sudo apt install php-mysql
# for specific version of php (e.g. php7.4)
sudo apt install php7.4-mysql

重新启动您的服务器:

# apache
sudo systemctl restart apache2
# nginx
sudo systemctl restart nginx

最终,在我安装了PHP-MySQL之后,它终于可以工作了,所以“找不到驱动程序错误”不再出现了。但是现在我仍然无法显示表格,因为出现了一个新的错误:Illuminate\Database\QueryException SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from list)。你能给我提供解决方案吗?我应该怎么修复这个问题?(仍然在同一段代码中) - pup_in_the_tree
2
请尝试使用DB_HOST=127.0.0.1而不是DB_HOST=localhost,然后更改后不要忘记刷新缓存(php artisan config:cache)。 - boolfalse
好的,它现在可以正常工作了,“没有这样的文件或目录”错误不再出现,但是当我尝试刷新时,又出现了一个新的错误:ErrorException Undefined variable: tabelku (View: /opt/lampp/htdocs/isidata/resources/views/tabel.blade.php) in http://localhost:8000/home/tabel。你能告诉我该怎么做修复这个问题吗?(仍然在homeController.php、tabel.blade.php和web.php相同的代码中) - pup_in_the_tree
在您的控制器中将“people”替换为“tabelku”。 - boolfalse
是的,它可以工作。最终表格被显示,不再出现错误。非常感谢 :) - pup_in_the_tree

0

这是为那些使用共享主机的用户准备的,因为SSH设施可能不可用。

进入您的Cpanel PHP设置,并确保启用以下功能(特别是PHP 8.0或更高版本)。

mysqli pdo mysql

因为Laravel中控制器中的“DB”和“Models”需要启用这些功能。否则,控制器将引发DRIVER NOT FOUND异常。


-1
清除缓存:有时候,缓存问题可能会导致意外错误。在您的Laravel项目的根目录中运行以下命令: php artisan config:clear 和 php artisan cache:clear

1
你的回答可以通过添加更多支持性信息来改进。请编辑以添加更多细节,例如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接