gpt4 book ai didi

mysql - 将 Laravel MYSQL 更改为 utf8mb4 以在现有数据库中支持表情符号

转载 作者:IT王子 更新时间:2023-10-29 00:31:00 26 4
gpt4 key购买 nike

我正在使用 Laravel 5.3 并且我已经设置了我的生产服务器。所有数据库迁移都已使用以下数据库配置创建:

'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],

但是现在,我的一些用户报告说,他们在尝试保存包含表情符号😊图标的表单时遇到错误。搜索后我发现我需要将 mysql 字符集设置为 utf8mb4 才能正常工作,所以我的配置应该是这样的:

'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],

由于这是在生产服务器中,我无法执行 migrate:refresh。所以我的问题是:

  1. 如何更改我使用 laravel 迁移创建的现有数据库以使用 utf8mb4 而不是 utf8 并同时更新 laravel?有更简单的方法吗?
  2. 如果上述情况可行,我是为所有表格设置 utf8mb4 还是仅将其用于我真正要使用表情符号的 2 个表格列?

感谢您的帮助。

最佳答案

  1. 使用原始mysql查询编写更新表迁移脚本并运行php artisan migrate命令

     use Illuminate\Database\Migrations\Migration;

    class UpdateTableCharset extends Migration {

    /**
    * Run the migrations.
    *
    * @return void
    */
    public function up() {
    DB::unprepared('ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8mb4');
    }

    /**
    * Reverse the migrations.
    *
    * @return void
    */
    public function down() {
    DB::unprepared('ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8');
    }
    }
  2. 我的个人喜好,更新表格。我没有证据表明它更好

注意:您仍然必须将数据库配置保留为 utf8mb4

关于mysql - 将 Laravel MYSQL 更改为 utf8mb4 以在现有数据库中支持表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43003301/

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