将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) 连接charset
是utf8
而不是utf8mb4
跨度>
@DilipHirapara 我试图将 utf8mb4 更改为 utf8 但什么也没发生。还有其他解决方案吗?
更改database.php文件后的一件事你清除了缓存吗?
【参考方案1】:
我也遇到过同样的问题。错误地,我没有在 Heroku 仪表板上的配置变量中添加 DB_CONNECTION=pgsql
。 Inside 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_CONNECTION
和 value = 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”