Как обойти «числовое значение вне диапазона» при вставке в MariaDB - PullRequest
0 голосов
/ 14 марта 2019

Иногда я получаю эту ошибку:

SQLSTATE[22003]: Numeric value out of range: 1264 Out of range value for column

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

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Пока GMB отвечает на вопрос state , я хочу сделать предложение о загрузке «неизвестных» данных.

  1. LOAD во временную таблицу с чрезмерно большими типами данных.
  2. Исследуйте данные с помощью таких вещей, как SELECT MAX(x) ...
  3. Принимает обоснованные решения в отношении желаемых типов данных.
  4. CREATE TABLE
  5. INSERT INTO real_table SELECT * FROM temp_table;
0 голосов
/ 14 марта 2019

В MariaDB вам необходимо отключить STRICT_TRANS_TABLES и STRICT_ALL_TABLES, как описано в документации :

Режим, в котором хотя бы один из STRICT_TRANS_TABLES илиSTRICT_ALL_TABLES включено, называется строгим режимом.

[...]

Если не установлен строгий режим (по умолчанию в версии <= MariaDB 10.2.3), MariaDB автоматически корректирует недопустимые значенияНапример, усечение слишком длинных строк или корректировка числовых значений, выходящих за пределы диапазона, и выдача предупреждения. </p>

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