Значение в порядке, но я подозреваю, что вы не можете создать таблицу со старым значением, что вам нужно сделать, прежде чем вы сможете ее изменить.
Проблема в том, что MySQL 5.7 и более поздние версии по умолчанию включают строгий режим SQL, что делает бессмысленные даты, такие как 0000-00-00, ошибкой. Но это значение по умолчанию, назначаемое многим столбцам даты и времени в Wordpress.
Было обсуждение исправления Wordpress для работы в строгом режиме MySQL, поскольку теперь это значение по умолчанию для современных экземпляров MySQL. Но это заняло бы слишком много работы и рискует быть несовместимым со многими плагинами Wordpress, которые ожидают, что вместо пропущенной даты будет использоваться значение «0000-00-00 00:00:00» вместо NULL. Таким образом, ваше решение использовать '1000-01-01 00:00:00' может не работать в любом случае.
В этом обсуждении ведущий разработчик Wordpress писал:
«WordPress просто не поддерживает строгий режим».
Затем он удалил «веху: будущий выпуск» из запроса функции, что означает, что нет никакого намерения исправлять это в Wordpress.
Таким образом, решение состоит в том, чтобы отключить строгий режим на MySQL. Жаль.
В коде Wordpress вы можете найти includes/wp-db.php
, в котором перечислены:
/**
* A list of incompatible SQL modes.
*
* @since 3.9.0
* @var array
*/
protected $incompatible_modes = array(
'NO_ZERO_DATE',
'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'STRICT_ALL_TABLES',
'TRADITIONAL',
);
Установите опцию sql_mode
в файле my.cnf
, чтобы пропустить эти режимы sql. Вы можете оставить другие режимы sql, например, в наборе режимов sql по умолчанию для MySQL 5.7:
[mysqld]
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Вы также можете изменить глобальный режим sql без необходимости перезапускать MySQL Server:
mysql> SET GLOBAL sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';