Задать вопрос
Qwentor
@Qwentor
Веб-программист

Как разрешить zero dates в MariaDB?

Нужно бэкап с одного сервера перенести на другой.
Но в бэкапе присутствуют, к примеру, такие конструкции:
`dt` timestamp DEFAULT NULL,

Т.е. поле с датой по умолчанию NULL, а в новых версиях MySQL такое запрещено

В интернете предлагают записать такое в файл в /etc/mysql/conf.d/:
[mysqld]
sql_mode=IGNORE_SPACE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


Режим судя по результату запроса
show variables like 'sql_mode'
действительно меняется, но толку никакого -
1067 - Invalid default value for 'dt'

Версия базы MariaDB 10.1.37

В чем дело? Почему не работает?
  • Вопрос задан
  • 146 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Попробуйте:
`dt` timestamp NULL DEFAULT NULL,
Мне кажется в этом дело - у вас `dt` по умолчанию 'NOT NULL'
Ответ написан
Комментировать
orlov0562
@orlov0562
I'm cool!
Почитай про explicit_defaults_for_timestamp

explicit_defaults_for_timestamp is enabled, the server disables the nonstandard behaviors and handles TIMESTAMP columns as follows:
- It is not possible to assign a TIMESTAMP column a value of NULL to set it to the current timestamp. To assign the current timestamp, set the column to CURRENT_TIMESTAMP or a synonym such as NOW().


как я понимаю, можно на время импорта эту опцию отключить или заменить в дампе
`dt` timestamp DEFAULT NULL,
на
`dt` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
**код не проверял, взят отсюда
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы