Результат экспорта phpMyAdmin в коде ошибки: 1406. Данные слишком длинные для столбца - PullRequest
0 голосов
/ 17 мая 2018

Я перемещаю базу данных с другого сервера и использую phpMyAdmin для создания дампа sql. Проблема возникает при вставке столбца text, где, по-видимому, экспортируемые данные немного длиннее. Я понимаю, как отключить режим STRICT, но это только приводит к усечению вставленных данных, а это не то, что мне нужно. Я не понимаю, как это возможно, что экспортируемые данные слишком долго, чтобы вставить снова, если phpMyAdmin каким-то образом добавляет символы в поле.

Максимальная длина поля text составляет 65 535, и то, что я вставляю, оказывается слишком длинным на несколько сотен символов. В качестве обходного пути я собираюсь изменить оператор вставки, чтобы создать поле как longtext, но я действительно хотел бы знать, почему мой экспорт не импортируется как есть и как его исправить.

1 Ответ

0 голосов
/ 17 мая 2018

Собираюсь ответить на мой собственный вопрос здесь. Видимо phpMyadmin экспортирует переводы строк как \r\n. Я немного читал об этой ошибке в некоторых версиях 4.6 - однако я использую v4.7, и она все еще демонстрирует такое поведение. Короче говоря, простой символ новой строки становится 4 символа - поэтому в поле text, которое ровно 65 535 символов (вероятно, усечено в прошлом), экспортированные данные теперь длиннее, чем на самом деле в таблице .

Для меня исправление состояло в том, чтобы открыть файл в vim и сделать простое:

:%s#\\r\\n#\r#g

Что заменяет все эти символы настоящими символами новой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...