2014-05-15 28 views
9

Veritabanım MySql 5.6.MySQL - varsayılan değer TIMESTAMP (3) için

CURRENT_TIMESTAMP öğesini varsayılan değer olarak TIMESTAMP (3) türünde bir öznitelik olarak kullanmak istiyorum.

ERROR 1067 (42000): Invalid default value for 'updated'

Ben CURRENT_TIMESTAMP sadece saniye hassasiyetle olduğundan bu olduğunu düşünüyorum:

Ama hata alıyorum.

Geçerli saati, kesirli parçalı timestamp için varsayılan değer olarak nasıl ayarlayabilirim?

+0

3, olup birinci deneyin TI’da MESTAMP (3). Ayrıca, CURRENT_TIMESTAMP kullanan tabloda yalnızca bir alanınız olduğundan emin olun. –

+0

Sorun, mysql yeni sürümlerinde varsayılan değerde eklenen mikrosaniyelerden kaynaklanmaktadır. Çözümler için http://tekina.info/default-datetime-timestamp-issue-mysql-upgrading-5-6/ adresine bakın. –

cevap

12
timestamp belgelerine uyarınca

ve datetime tipi kolonlar:

If a TIMESTAMP or DATETIME column definition includes an explicit fractional seconds precision value anywhere, the same value must be used throughout the column definition.

This is permitted:

CREATE TABLE t1 (
    ts TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) 
); 

Diğer örnekler:

mysql> create table tbl_so_q23671222_1(ts timestamp(3) default now()); 
ERROR 1067 (42000): Invalid default value for 'ts' 

mysql> create table tbl_so_q23671222_1(ts timestamp(3) default now(3)); 
Query OK, 0 rows affected (0.59 sec) 

mysql> create table tbl_so_q23671222_2(ts timestamp(3) default current_timestamp); 
ERROR 1067 (42000): Invalid default value for 'ts' 

mysql> create table tbl_so_q23671222_2(ts timestamp(3) default current_timestamp(3)); 
Query OK, 0 rows affected (0.38 sec) 

mysql> desc tbl_so_q23671222_1; 
+-------+--------------+------+-----+----------------------+-------+ 
| Field | Type   | Null | Key | Default    | Extra | 
+-------+--------------+------+-----+----------------------+-------+ 
| ts | timestamp(3) | NO |  | CURRENT_TIMESTAMP(3) |  | 
+-------+--------------+------+-----+----------------------+-------+ 
1 row in set (0.01 sec) 

mysql> desc tbl_so_q23671222_2; 
+-------+--------------+------+-----+----------------------+-------+ 
| Field | Type   | Null | Key | Default    | Extra | 
+-------+--------------+------+-----+----------------------+-------+ 
| ts | timestamp(3) | NO |  | CURRENT_TIMESTAMP(3) |  | 
+-------+--------------+------+-----+----------------------+-------+ 
1 row in set (0.01 sec) 

Bakınız:
Initialization and Updating for TIMESTAMP and DATETIME

İlgili konular