Наскоро започнахме да получаваме 'utf8' codec can't decode bytes in position 30-31: unexpected end of data
, когато събираме данни от базата данни (използвайки Python и SQLAlchemy). Намерихме грешката в някои специални японски знаци.
Всички таблици имат CHARSET=utf8
и това са настройките, които имаме на сървъра, когато стартирам show variables;
| character_set_client | latin1
| character_set_connection | latin1
| character_set_database | latin1
| character_set_filesystem | binary
| character_set_results | latin1
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | /usr/share/mysql/charsets/
| collation_connection | latin1_swedish_ci
| collation_database | latin1_swedish_ci
| collation_server | latin1_swedish_ci
Ако не искаме да преместим нашата среда към utf8 - Кои настройки се препоръчват и как трябва да експортираме и импортираме текущите данни, които имаме, за да работят с новите настройки?
Прочетох някои публикации за експортиране на данните като latin1
чрез добавяне на --default-character-set=latin1
към командата mysqldump и след това импортиране в базата данни, която има новите настройки, но тъй като оригиналните ни таблици вече са в utf8, това няма да работи.
Опитах да настроя връзката, след като прочетох тази тема: SQLAlchemy и UnicodeDecodeError
Това решава проблема със срива на приложението, но всички стари данни са повредени.
SET NAMES
. правите резервно копие и опитвате просто да конвертирате? - person Daniel W.   schedule 02.12.2013