将laravel部署到heroku时,参数“client_encoding”的值无效:“utf8mb4”(SQL:从“tablename”中选择*)[关闭]

Posted

技术标签:

【中文标题】将laravel部署到heroku时,参数“client_encoding”的值无效:“utf8mb4”(SQL:从“tablename”中选择*)[关闭]【英文标题】:invalid value for parameter "client_encoding": "utf8mb4" (SQL: select * from "tablename") when deploy laravel to heroku [closed] 【发布时间】:2020-03-06 19:04:38 【问题描述】:

我正在尝试将我的 laravel 应用程序部署到 heroku,但它返回错误:

SQLSTATE[22023]: Invalid parameter value: 7 ERROR: invalid value for parameter "client_encoding": "utf8mb4" (SQL: select * from "tablename"). 

我将表名排序规则和列从 utf8mb4_unicode_ci 更改为 utf8unicode_ci,但什么也没发生。请帮我。我尝试了所有可能的解决方案,但都没有真正奏效。

【问题讨论】:

您使用的是 Postgres 数据库吗? @DilipHirapara 起初,我使用它。但由于它返回错误,我试图迁移到 mysql,但我仍然遇到同样的错误。我该怎么办? 检查config/database.php (i) 在production 中使用了正确的default connection 并且(ii) 连接charsetutf8 而不是utf8mb4跨度> @DilipHirapara 我试图将 utf8mb4 更改为 utf8 但什么也没发生。还有其他解决方案吗? 更改database.php文件后的一件事你清除了缓存吗? 【参考方案1】:

我也遇到过同样的问题。错误地,我没有在 Heroku 仪表板上的配置变量中添加 DB_CONNECTION=pgsqlInside setting tab点击Reveal Config Vars并在此处添加DB_CONNECTION=pgsql

另一种方法只需使用终端添加 config vars

 heroku config:add DB_CONNECTION=pgsql

【讨论】:

【参考方案2】:

Laravel 数据库连接环境问题

您可能使用 Postgresql 作为数据库而不是 MySql。 然后请在config/database.php文件中配置数据库配置

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

或将 .env 中的 DB_CONNECTION 设置为 pgsql

pgsql 不支持 utf8mb4,是 MySQL 的,如果你使用的是 Postgresql,请修正连接环境。

【讨论】:

【参考方案3】:

按照 config/database.php 中指定的方式设置 psql 详细信息后 运行

git push origin master
git push heroku master

然后尝试再次运行 bash..

heroku run bash
php artisan migrate:fresh
yes

你很高兴

【讨论】:

【参考方案4】:

你在使用 laravel/telescope 吗? 我在尝试实施我的项目时遇到了同样的问题。为了解决这个错误,我从我的项目中删除了 laravel/telescope。

【讨论】:

【参考方案5】:
'mysql' => [
        // ...
        'charset' => 'utf8',
        'collation' => 'utf8_general_ci',
        // ...
],

【讨论】:

【参考方案6】:

对于mysql:

[
    'database.connections.rds' => [
        'driver' => 'mysql',
        'host' => $endpoint,
        'port' => $port,
        'database' => $db_name,
        'username' => $user,
        'password' => $password,
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ]
]

对于 Postgres


[
    'database.connections.rds' => [
        'driver' => 'pgsql',
        'host' => $endpoint,
        'port' => $port,
        'database' => $db_name,
        'username' => $user,
        'password' => $password,
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_general_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ]
]

【讨论】:

【参考方案7】:

如果您还没有完成 key = DB_CONNECTIONvalue = pgsql,这会发生在 Heroku 上的环境变量配置级别。

【讨论】:

【参考方案8】:

在 config/database.php 中,使用默认连接 '默认' => 'pgsql', "client_encoding": "utf8"

如果您使用的是 MySQL,请将默认连接更改为 '默认' => 'mysql', "client_encoding": "utf8mb4"

【讨论】:

以上是关于将laravel部署到heroku时,参数“client_encoding”的值无效:“utf8mb4”(SQL:从“tablename”中选择*)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在Heroku免费计划上部署laravel-websockets服务器?

部署到 Heroku 错误:找不到模块“/app/server.js”

如何在Heroku上部署时配置/设置命令

如何将 React 应用程序部署到 Heroku

如何快速使用 Heroku 来部署你的 Laravel 应用

将 Angular 2 应用程序部署到 Heroku