MySQL日期使用默认值的问题
今天突然遇到这么一个情况,在使用log4j进行日志记录的时候,需要一张日志表,log4j的配置如下:
log4j.appender.DATABASE = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.Threshold = DEBUG
log4j.appender.DATABASE.URL = jdbc:mysql://localhost:3306/system-logs
log4j.appender.DATABASE.driver = com.mysql.jdbc.Driver
log4j.appender.DATABASE.user = root
log4j.appender.DATABASE.password = root
log4j.appender.DATABASE.sql = INSERT INTO logs (contents) VALUES (' %d - %c %-5p %c %x - %m%n ')
log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern =%d - %c -%-4r [%t] %-5p %c %x - %m %n
这里需要一个system-logs数据库,需要一张logs表,logs表中至少需要一个contents字段。为了方便查看日志,我想在表中加入一个主键,使用MySQL的主键自增。创建表的代码如下:
CREATE TABLE logs(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
insert_date DATETIME DEFAULT NOW(),
contents VARCHAR(50000)
);
出现如下错误:
1 queries executed, 0 success, 1 errors, 0 warnings
查询:create table logss(id bigint primary key auto_increment,insert_date datetime default now(),contents varchar(50000))
错误代码: 1067
Invalid default value for ‘insert_date’
执行耗时 : 0 sec
传送时间 : 0 sec
总耗时 : 0 sec
网上查了很多资料,最终得知,datetime或者date类型是接收不了now()方法的返回值的。需要使用timestamp类型