2016-04-20 6 views
2

Я получаю ошибку в моей базе данных. Я встречаю недопустимое значение по умолчанию для timestamp.Недопустимое значение по умолчанию для 'timestamp'

вот моя база данных:

CREATE TABLE IF NOT EXISTS `post` (
`id` int(11) NOT NULL, 
    `text` varchar(10000) NOT NULL, 
    `threadId` int(11) NOT NULL, 
    `userId` int(11) NOT NULL, 
    `dateCreated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `isModified` tinyint(4) NOT NULL DEFAULT '0' 
) ENGINE=InnoDB AUTO_INCREMENT=171 DEFAULT CHARSET=latin1; 



CREATE TABLE IF NOT EXISTS `category` (
`id` int(11) NOT NULL, 
    `name` varchar(100) NOT NULL, 
    `timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `color` varchar(10) DEFAULT '#00bcd4', 
    `icon` varchar(100) NOT NULL DEFAULT 'https://mymonas.com/forum/category_icon/ic_question.png' 
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; 
+0

Могу ли я предложить вам изменить ваш набор символов 'UTF8mb4', так как это побочные проблемы с символами wyrd в будущем. [читайте больше здесь] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – Martin

+0

та же проблема, я получил, # 1067 - Недопустимое значение по умолчанию для 'timestamp' –

+0

О да, это в стороне, а не само по себе. – Martin

ответ

2

Используйте CURRENT_TIMESTAMP() вместо CURRENT_TIMESTAMP

т.е.

CREATE TABLE IF NOT EXISTS `post` (
`id` int(11) NOT NULL, 
    `text` varchar(10000) NOT NULL, 
    `threadId` int(11) NOT NULL, 
    `userId` int(11) NOT NULL, 
    `dateCreated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP(), 
    `timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP() ON UPDATE CURRENT_TIMESTAMP(), 
    `isModified` tinyint(4) NOT NULL DEFAULT '0' 
) ENGINE=InnoDB AUTO_INCREMENT=171 DEFAULT CHARSET=latin1; 

Now() работает хорошо

+0

такая же ошибка снова. error not fix i just put(), но он не работает –

+0

В какой версии mySQL вы используете –

+0

Phpmyadmin Информация о версии: 4.0.10.7, последняя стабильная версия: 4.6.0 и версия клиентской базы данных: libmysql - 5.1.73 –

6

У меня была та же проблема, Я изменил тип с «datetime» на «timestamp», и он сработал. У меня mysql 5.5.52.

Mysql_error

+0

horray, это сработало – vuhung3990

1

С MySQL 5.5 руководство:.

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

Изменения в MYSQL 5.6.x, которые позволяют функциональность документированы здесь:

«По состоянию на MySQL 5.6.5, TIMESTAMP и DATETIME колонки могут быть автоматически initializated и обновляется до текущей даты и (т. е. текущая временная метка). До 5.6.5 это верно только для TIMESTAMP и не более одного столбца TIMESTAMP для каждой таблицы. "

Таким образом, это означает, что вы используете старую версию MySQL, либо вы можете использовать DATETIME тип данных обновить версию MySQL

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