Zdravím,
snažím se převést projekt z SQLite na MySQL, ale neustále mám problém při importu dat. Postupuji prověřenou cestou, tedy export dat do json pomocí manage.py, přehodím databáze a pak pomocí loaddata chci zase data do nové DB naplnit.
Konkrétně tedy v MySQL vytvořím DB:
character set: utf8mb4
collation: utf8mb4_bin (zkoušel jsem i jiné)
a připojím přes:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'nazev-db',
'USER': 'root',
'PASSWORD': 'root',
'HOST': '127.0.0.1',
'PORT': '8889',
},
'OPTIONS': {
'charset': 'utf8mb4'
},
}
pak provedu vytvoření tabulek:
python manage.py migrate --run-syncdb
vymažu všechna data ve všech tabulkách:
python manage.py sqlflush | python manage.py dbshell
a jdu nahrávat data:
python ./manage.py loaddata data.json
No a i přes veškerou snahu skončím na problém 4byte znaků, které se prostě do DB nenačtou:
...
...
File "/Users/moreplavec/virtuals/nazev-db/lib/python3.7/site-packages/MySQLdb/connections.py", line 259, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: Problem installing fixture '/Users/moreplavec/virtuals/nazev-db/nazev-db/data.json': Could not load testimonials.CourseTestimonials(pk=148): (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x8A, ...' for column 'content' at row 1")
Podle Google je to ten problém se 4byte v MySQL, ale už nevím co může být špatně, že to nejede. DB jsem založil 4byte, v konfigu to mám a přesto to ta data nenačte.
Prosím o radu, zda někdo tuší kde ještě co nastavit, nějak to už prostě nevidím :)