在使用mysql時當建表語句中有以下語句時:
create_time datetime not null
default
'0000-00-00 00:00:00'
則會出現以下的異常:
invalid default
value
for'create_time'
這是由於 sql_mode 的問題沒設定好,方案如下:
方案一:
查詢當前資料庫的 sql_mode
輸入:
select
@@sql_mode
得到以下結果:
only_full_group_by,strict_trans_tables,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution
可以看到no_zero_in_date,no_zero_date
是 date 不能全部為0的原因,所以把模式中的no_zero_in_date,no_zero_date
去掉就可set [session|global] sql_mode=』modes』下:
set
global sql_mode='only_full_group_by,strict_trans_tables,error_for_division_by_zero,no_auto_create_user,no_engine_substitution'
其中:session只在當前會話中生效,global為全域性生效。
方案二:
改mysql模式
修改my.cnf檔案,在[mysqld]中新增
sql-mode=only_full_group_by,strict_trans_tables,error_for_division_by_zero,no_auto_create_user,no_engine_substitution
重啟mysql
方案三:
把語句改為以下就可以執行建立表
create_time datetime not null
default
'0000-01-01 00:00:00'
mysql中的datetime型別的比較
例如有乙個user表如下 create table user id int 11 primary key,name varchar 50 not null,age int 3 not null,create time datetime not null 一 date 如需要查詢近乙個月新增的使用者 ...
mysql中datetime比較大小問題
select sum studychj as tofflinejz from afterline where checkflag 1 and studytype 1 and studybegin 2010 01 01 00 00 00 and studyend 2010 12 01 00 00 00...
mysql中datetime比較大小問題
select sum studychj as tofflinejz from afterline where checkflag 1 and studytype 1 and studybegin 2010 01 01 00 00 00 and studyend 2010 12 01 00 00 00...