【问题标题】:How to insert emoji into MYSQL 5.5 and higher using Django ORM如何使用 Django ORM 将表情符号插入 MYSQL 5.5 及更高版本
【发布时间】:2017-11-13 17:35:23
【问题描述】:

我正在尝试将表情符号插入到我的 mysql 表中的某个文件中。 我运行了 alter 命令并将排序规则更改为 "utf8mb4_general_ci"

  ALTER TABLE XYZ MODIFY description VARCHAR(250) CHARACTER SET utf8mb4
  COLLATE utf8mb4_general_ci;

上述查询后的表详情:

+-------------+--------------+---------------+--------------------+
| Column      | Type         | Character Set | Collation          |
+-------------+--------------+---------------+--------------------+
| description | varchar(250) | utf8mb4       | utf8mb4_general_ci |
+-------------+--------------+---------------+--------------------+

在此之后,我运行查询以使用表情符号更新 description 列,每次我在查询下方运行时,表情符号都会被替换为“?”。

  update XYZ set description='a test with : ????????' where id = 1;

但是,当我从相同 id 的选择查询中打印结果时,它会显示''?'代替表情符号。结果是:

  "a test with : ??"

对模型文件进行了必要的更改。 请接受我没有说清楚的道歉,我们将不胜感激。

【问题讨论】:

  • 您是否尝试在 django 数据库配置中添加 'OPTIONS': {'charset': 'utf8mb4'} 以及用户名和密码?
  • 是的,我也这样做了。
  • 您是否尝试更改 /etc/mysql/my.cnf 选项?
  • 不是真的,我应该在那里改变什么?
  • 也尝试更改 my.cnf 文件,但没有用。

标签: mysql django utf-8 utf8mb4


【解决方案1】:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {
                    'charset': 'utf8mb4',
                    'use_unicode': True, },
    },
}

my.cnf:

[mysqld]
character-set-server=utf8mb4
default-collation=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4

【讨论】:

    【解决方案2】:

    这让我在 MYSQL 8.0.1 上节省了时间

    my.cnf

    [client]
    default-character-set = utf8mb4
    
    [mysql]
    default-character-set = utf8mb4
    
    [mysqld]
    character-set-client-handshake = FALSE
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 1970-01-01
      • 2015-07-05
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 2021-10-03
      • 2019-03-11
      相关资源
      最近更新 更多