2015-07-27 2 views
0

У меня есть 2 сервера Windows, на которых запущена MySQL, одна из них - версия 5.1 и другая работающая версия 5.7. Я пытаюсь скопировать базу данных с MySQL 5.7 на 5.1 на другой сервер и полагаю, что это разница в версиях (новый синтаксис в 5.7?), Который вызывает эту ошибку, но я мог ошибаться.В чем причина того, что MySQL говорит мне «Недопустимое значение по умолчанию для« postdate »?

После Экспорта через PhpMyAdmin базы данных I в версии 5.7 и пытается импортировать в версии 5.1 Я получаю ошибку

MySQL сказал: Документация # 1067 - Недопустимое значение по умолчанию для «постдатировать»

по команде

CREATE TABLE IF NOT EXISTS `jobs` (

`id` mediumint(9) NOT NULL , 
`title` varchar(200) DEFAULT NULL , 
`descr` varchar(5000) DEFAULT NULL , 
`postdate` datetime DEFAULT CURRENT_TIMESTAMP 
) ENGINE = InnoDB AUTO_INCREMENT =5 DEFAULT CHARSET = utf8mb4; 

Любая идея, почему?

+0

@Mihai Хм, вот что создала программа 'mysqldump'. Иногда mysqldump делает ошибки? –

+4

5.1 cant имеет столбец по умолчанию в столбце datetime, измените его на timestamp \ – Mihai

+1

, вы можете проверить этот вопрос [invalid-default-value-for-dateadded] (http://stackoverflow.com/questions/9005766/invalid-default-value- для-dateadded) –

ответ

2

В 5.1 значение по умолчанию должно быть постоянным (например, NULL является допустимым), за исключением timestamp, где разрешен current_timestamp. I.e., для даты или даты и времени вы не можете использовать current_date, now или current_timestamp.

Так что вы либо прилипают к datetime типа для postdate колонки и вы должны отказаться от current_timestamp в качестве значения по умолчанию (вы можете возможно настроить триггер для этой цели, смотрите примеры here), или - в зависимости от ваших требований - рассмотрите возможность использования timestamp (который имеет различный диапазон значений).

Соответствующий раздел manual говорит:

С одним исключением, значение по умолчанию должно быть постоянным; он не может быть функцией или выражением. Это означает, например, что вы не можете установить значение по умолчанию для столбца даты как значение функции, такое как как NOW() или CURRENT_DATE. Исключением является то, что вы можете указать CURRENT_TIMESTAMP как значение по умолчанию для столбца TIMESTAMP.

Смежные вопросы