Shrey
Shrey

Reputation: 145

How to insert emoji into MYSQL 5.5 and higher using Django ORM

I am trying to insert emoji's into a certain filed in my mysql table. I ran alter command and changed the collation to "utf8mb4_general_ci"

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

Table details after above query:

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

After this I ran the query to update description column with emoji's, every time I ran below query, the emoji is replaced by '?'.

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

But when i print the result from a select query for the same id, it displays' '?' in place of emoji. The result was:

  "a test with : ??"

Carried out necessary changes into model file. Please accept my Apologies for not making it clear, would appreciate any lead in this matter.

Upvotes: 10

Views: 5274

Answers (2)

fankcoder
fankcoder

Reputation: 1

this save me on 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

Upvotes: 0

Rick James
Rick James

Reputation: 142208

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

Upvotes: 23

Related Questions