Я использую две базы данных на одном типичном сервере WAMP, а другой - локальную базу данных MySQL. Я замечаю, что есть некоторые отличия в том, что каждая база данных хранит blobs, и я замечаю это, когда я экспортирую строку и сравниваю каждый blob.Различия между кодировками blob между базами данных
Например, когда локальный MySQL экспортирует blob, любой символ «NUL» ASCII имеет префикс «\», но это не тот случай, когда он экспортируется из WAMP MySQL. Таким образом, чтобы соответствовать им, что я должен делать (в PHP для экспорта БД)
$val = str_replace(chr('NUL'), '\0', $val);
Как я работаю через ищет больше различий между экспортом, я также должен был сделать это, а также
$val = str_replace(chr(0x9), chr(0x5c).chr(0x9), $val);
$val = str_replace(chr(0xa), chr(0x5c).chr(0xa), $val);
И это было прекрасно, для очень простого и крошечного образа. Но я могу представить, что есть тонна больше различий, с которыми я столкнусь, и я не могу объяснить их все правильно и своевременно. Мне интересно, что это значит. Обе таблицы - это механизм InnoDB и utf8_general_ci. Что еще может быть неправильно сконфигурировано?
Звучит так, как SQL Anywhere возвращает результаты в виде строки и избегает байтов NUL, чтобы избежать раннего завершения строки на языках, которые завершают строки с помощью NUL. Он также, как представляется, избегает других символов управления строкой (9 == tab, a == line feed). Я предполагаю, что он, вероятно, избегает других байтов, которые ниже 0x20. У вас есть поле, определенное как «LONG BINARY»? – superultranova
Спасибо. Одна ошибка, которую я сделал, заключается в том, что оба они являются MySQL. Оба столбца имеют тип «blob». Локальная команда дампа MySQL должна сбрасывать эти символы, а команда PHP - нет. Есть ли простое решение? – user3822370
Так что оба экспортируются по-разному, что имеет смысл. Вы уверены, что они хранят данные по-разному? mysqldump выводит текстовый файл, поэтому я не удивлюсь, если он ускользнет от управляющих символов. PHP, с другой стороны, через PDO или mysqli_query будет возвращать двоичный файл, поскольку данные предназначены для использования вашим php-скриптом. Что именно вы пытаетесь сделать здесь? Импортировать данные из mysqldump через PHP? – superultranova