Я использую Python Eve Framework в качестве бэкэнда для получения данных из базы данных.Однако один из столбцов в одной из таблиц содержит специальные символы.Ошибка выглядела так:
sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1267, "Illegal mix of collations (latin1_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'")
[SQL: SELECT count(*) AS count_1
FROM (SELECT table._created AS
table__created, table._updated AS
table__updated, table._etag AS
table__etag, table.created_at AS
table_created_at, table.updated_at AS
table_updated_at, table.id AS
table_id, table.name AS
table_name, table.instructions AS
table_instructions, table.updated_by AS
table_updated_by
FROM table
WHERE table.name LIKE %(name_1)s ORDER BY
table.id DESC) AS anon_1]
[parameters: {'name_1': '�%'}]
(Background on this error at: http://sqlalche.me/e/2j85)
Кстати, API был примерно таким:
https://api.prod.com/table?where={%22name%22:%22like(\%22%Aa%\%22)%22}&sort=-id
- Первое решение, которое мы попытались, было изменить параметры сортировкистолбец в таблице.Это не сработало.
Затем я запускаю скрипт, чтобы обновить все символы в ASCII для каждой строки.Таким образом, приведенный ниже код был в цикле, преобразовывающем каждую строку 'name'.
name=""
if(rec['name']):
for ch in rec['name']:
name+=chr(ord(ch))
Оба они не работали.
Как заставить это работать?Любая помощь приветствуется.