SQLSTATE[HY000] [2054] 服务器向客户端发送了未知的字符集。请向开发人员报告

SQLSTATE[HY000] [2054] Server sent charset unknown to the client. Please, report to the developers

我正在尝试在 laravel 中创建一个登录系统。 我已经更新了环境。带有名为 kokodb 的数据库的文件。 但是,当我在 cmd 中 运行 这段代码 'php artisan migrate' 时,我遇到了以下错误:

在 Connection.php 行 647 中:

SQLSTATE[HY000] [2054] Server sent charset unknown to t he client. Please, report to the developers (SQL: selec t * from information_schema.tables where table_schema = kokodb and table_name = migrations)

在 Connector.php 第 68 行:

SQLSTATE[HY000] [2054] Server sent charset unknown to t he client. Please, report to the developers

在 Connector.php 第 68 行:

PDO::__construct(): Server sent charset (255) unknown t o the client. Please, report to the developers

你能帮帮我吗?我在其他任何地方都没有找到解决这个问题的方法。

试试这个:

  1. PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers

  2. Laravel Migration Error: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

  3. php artisan make:auth

然后

  1. php artisan 迁移

确保您的 .env 文件中的数据库参数正确。这里的本地主机场景:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_username
DB_PASSWORD=your_pass

.env 中进行任何更改后,在控制台中使用 php artisan config:cache

也在config/database.php设置

    'charset'     => 'utf8mb4',
    'collation'   => 'utf8mb4_unicode_ci',
    'modes'       => [
                'ONLY_FULL_GROUP_BY',
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_ENGINE_SUBSTITUTION',
            ],

然后还有:php artisan config:cache

祝你好运!

您使用的 PHP 是什么版本?

根据 PHP 的错误追踪器,这应该在 7.0.19、7.1.5 和 7.2.0 中得到修复。

https://bugs.php.net/bug.php?id=74461

一些答案建议将服务器字符集从 utf8mb4 改回 utf8,但这是个坏主意。 utf8 不支持所有有效的 unicode 字符,因此尝试保存包含特定字符(如某些表情符号集)的字符串会导致数据库错误。最好直接将 PHP 升级到更新的版本。

确保先创建数据库。然后, 当涉及到 .env 文件中的数据库时,请确保您有正确的参数。这里的本地主机场景:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306 (this can be different when database changed.)
DB_DATABASE=your_database_name
DB_USERNAME=your_username
DB_PASSWORD=your_pass

还有 运行 : php artisan config:cache 清除缓存。

它对我有用..祝你好运

<?php

$servername = "localhost";

$username = "root";

$password = "";



try{

    // servername and database name
    // my port no is 3307 check your's
    $conn = new PDO('mysql:host = $servername; dbname=project1; ', $username, $password );


    // set the PDO error mode
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected Successfully";

}
catch(PDOException $e){

    
    echo "Your Connection failed: ".$e->getMessage();
}


?>

如果您使用的是旧版本的 PHP(例如 5.6),则需要降级 MySQL 版本。版本 5 工作正常。

但是,由于 PHP 5.6 现已不受支持,如果需要,您应该升级 PHP 和您的应用程序。