gpt4 book ai didi

php - 当 utf8mb4 时将符号插入数据库时​​ Lumen SQLSTATE 错误

转载 作者:行者123 更新时间:2023-11-29 16:07:44 24 4
gpt4 key购买 nike

我正在运行 Lumen 5.8,我有一个表和数据库,我想向其中添加游戏,我使用它进行迁移:

    Schema::create('games', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('slug');
$table->string('name');
$table->softDeletes();
$table->timestamps();

$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});

如您所见,我设置了字符集和排序规则。

我还添加到.env:

DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci

enter image description here

当我尝试添加像 Pokémon 这样的游戏时

$game = new Game();
$game->slug = "pokemon-red"
$game->name = "Pokémon Red"
$game->save();

我明白了

   SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE3\xA9mon-...' for column 'slug' at row 1 (SQL: insert into `games` (`slug`, `name`, `updated_at`, `created_at`) values (pokmon-white-version-2, Pokémon White Version 2, 2019-04-08 05:28:57, 2019-04-08 05:28:57))   

我不知道为什么我仍然收到错误。我可以将它直接插入到 PHPMyAdmin 中的字段中,没有任何问题,所以我认为它与 Lumen 特别有关。

作为引用,我首先发现了这个,这就是为什么所有内容都设置为 utf8mb4:

Cannot insert chinese in mysql database through utf8 encoding ( Warning 1336 incorrect string value)

我特意确保进入 PHPMyAdmin 并插入一条记录,它起作用了,这让我相信这是 Lumen 配置问题。

最佳答案

根据评论,我确定该名称实际上并未像我想象的那样进行编码。所以添加

$game->name = utf8_encode("Pokémon Red");

问题已解决!

关于php - 当 utf8mb4 时将符号插入数据库时​​ Lumen SQLSTATE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55569142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com