Синтаксическая ошибка при попытке восстановления из mysqldump с длинным большим двоичным объектом

#mysql #mariadb #hex

Вопрос:

Я создал резервную копию базы данных, содержащей изображения, сохраненные как LONG BLOB s с использованием mysqldump . Я не использовал --hex-blog флаг, что, оглядываясь назад, возможно, было наивно.

При попытке восстановить резервную копию в нетронутую базу данных MariaDB выдал мне следующую ошибку:

 ERROR 1064 (42000) at line 5169: You have an error in your SQL syntax;
check the manual that corresponds to your MariaDB server version for
the right syntax to use near ''z?|txl?|?{??    
??m?tq????{xkw' at line 1
 

После некоторых поисков я обнаружил, что эта ошибка возникает, например, если вы забываете экранировать защищенный символ в запросе. Я бы предположил, что некоторые шестнадцатеричные символы в длинном двоичном объекте интерпретируются как кавычки, и поэтому база данных пытается проанализировать это как SQL (при этом она терпит неудачу). Это правильно? И есть ли способ спасти эту ситуацию?

Комментарии:

1. Привет @julius. Использование --hex-blob не должно быть обязательным требованием для резервного копирования больших двоичных объектов. Так что это ошибка, с которой вы столкнулись. Если бы вы могли сообщить об этом в JIRA MariaDB в компоненте MDEV «Проекты, сценарии и клиенты», это было бы хорошо. Ваша версия сервера, ее конфигурация и какая версия клиента могли бы помочь. Если вы можете создать пример минимальной таблицы и создать ее резервную копию с помощью —hex-blob, это было бы идеально. Если это слишком конфиденциально, рассмотрите непубличную загрузку по ftp , доступную только разработчикам. Обратите внимание, что это там, на ДЖИРЕ.