Игнорировать предупреждения с помощью pt-online-schema-change

0

Я пытаюсь обновить таблицу, которая работала нормально минуту назад, но теперь я ударил ошибку, которая у меня в прошлом была крайне неудобной.

09:32:57 Copying rows caused a MySQL error 1300:
    Level: Warning
     Code: 1300
  Message: Invalid utf8mb4 character string: '94C494'

Есть ли опция или что-то такое, чтобы я мог игнорировать эти предупреждения? В конце концов, это всего лишь предупреждение, поэтому MySQL все еще имеет возможность двигаться вперед и копировать строки в любом случае.

Другие решения также были бы прекрасны, как способ найти оскорбительное значение в таблице или удалить недопустимые фрагменты или просто что-то, чтобы я мог изменить таблицу.

Мой Googling о том, как найти/заменить сломанные последовательности utf8 в MySQL, приносит мне эти ссылки (это не так полезно)

Я даже пробовал искать все столбцы, где шестнадцатеричный содержит недопустимую последовательность и все равно как-то не повезло

select * from 'notifications' 
where hex('Description') like '%94C494%' 
or hex('Title') like '%94C494%' 
or hex('NotificationID') like '%94C494%' 
or hex('ToUserID') like '%94C494%' 
or hex('FromUserID') like '%94C494%'
or hex('Link') like '%94C494%' 
or hex('Icon') like '%94C494%';

MySQL - это версия 5.7.18-15-57-log и pt-online-schema-change 3.0.8


Даже незнакомец, я решил юмориться и поискать ВСЕ столбцы (а не только utf8mb4), и я получил строки! Но единственные строки, которые я получил, были из моих двоичных столбцов? Почему в двоичном столбце имеет место недействительная последовательность utf8? Теперь я думаю, что это может быть ошибка с инструментом

select * ,hex('notificationid'), hex('notificationbid'), hex('fromuserid'), hex('touserid'), hex('title'), hex('description'), hex('read'), hex('datetimeadded'), hex('link'), hex('icon'), hex('shown'), hex('_linkdescriptionsha256'), hex('_touseridlinkdescription+sha3-224')
from 'notifications' 
where hex('notificationid') like '%94C494%'
or hex('notificationbid') like '%94C494%'
or hex('fromuserid') like '%94C494%'
or hex('touserid') like '%94C494%'
or hex('title') like '%94C494%'
or hex('description') like '%94C494%'
or hex('read') like '%94C494%'
or hex('datetimeadded') like '%94C494%'
or hex('link') like '%94C494%'
or hex('icon') like '%94C494%'
or hex('shown') like '%94C494%'
or hex('_linkdescriptionsha256') like '%94C494%'
or hex('_touseridlinkdescription+sha3-224') like '%94C494%';
Теги:
pt-online-schema-change

1 ответ

0
Лучший ответ

После работы с поддержкой Percona по этой проблеме мы в конечном итоге привели к созданию этого билета: https://jira.percona.com/browse/PT-1528

Трюк для игнорирования проблем с сортировкой (или работа с этой ошибкой) заключается в добавлении --charset binary флага --charset binary к команде изменения pt-online-schema-change.

Кажется, произойдет, когда первичный ключ является двоичным столбцом, а набор символов либо установлен в utf8 (mb4), либо выводится как один из параметров MySQL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню