Схема базы данных, значение по умолчанию NOW () - PullRequest
4 голосов
/ 16 марта 2011

У меня есть схема базы данных для пользователей.Это выглядит как ...

CREATE TABLE `users` (

`id` int( 8 ) unsigned AUTO_INCREMENT,
`username` varchar( 255 ),
`password` varchar( 40 ),
`level` tinyint( 1 ) unsigned DEFAULT 1,
`time` datetime DEFAULT NOW(),
`email` varchar( 255 ),

PRIMARY KEY (`id`)

) ENGINE=InnoDB;

Есть шесть полей: id , имя пользователя , пароль , уровень , время , электронная почта , но я хочу вставить только три из них - когда пользователь регистрируется: имя пользователя , пароль и E-mail .У остальных из них будут значения по умолчанию.

Проблема в том, что MySQL выдает ошибку: # 1067 - Неверное значение по умолчанию для 'time' .Есть идеи, ребята?

Ответы [ 4 ]

5 голосов
/ 16 марта 2011

Используйте CURRENT_TIMESTAMP и измените столбец на отметку времени.

Он делает то же самое, но работает (пока вы можете жить с отметкой времени) - это ограничение.

Обсуждение:

  1. http://bugs.mysql.com/bug.php?id=27645
  2. http://forums.mysql.com/read.php?61,67640,67771#msg-67771

Итак, твое творение становится

CREATE TABLE `users` (
`id` int( 8 ) unsigned AUTO_INCREMENT,
`username` varchar( 255 ),
`password` varchar( 40 ),
`level` tinyint( 1 ) unsigned DEFAULT 1,
`time` timestamp DEFAULT CURRENT_TIMESTAMP,
`email` varchar( 255 ),
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
0 голосов
/ 20 декабря 2012

мы не можем сделать «DEFAULT CURRENT_TIMESTAMP», когда мой атрибут «datetime», поэтому мы изменим наш атрибут на «TIMESTAMP», например:

time * дата / время * CEFRENT_TIMESTAMP по умолчанию,

should be...

time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

0 голосов
/ 16 марта 2011

Как правило, MySQL не поддерживает функции в качестве значений по умолчанию.Насколько я знаю, есть только одно исключение: вы можете присвоить CURRENT_TIMESTAMP столбцу TIMESTAMP.Таким образом, вам нужно либо изменить тип столбца (помня, что TIMESTAMP не такой мощный, как DATETIME), либо использовать триггер для заполнения значения.

0 голосов
/ 16 марта 2011

Вам нужно использовать TimeStamp, а не DateTime

`time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
...