无法弄清楚为什么这个SQL查询不起作用

时间:2012-01-06 05:27:51

标签: mysql default-value

SQL查询:

CREATE TABLE mytbl.customer(
CustID int( 10 ) NOT NULL AUTO_INCREMENT ,
FirstName varchar( 40 ) ,
LastName varchar( 40 ) ,
Street varchar( 50 ) ,
City varchar( 40 ) ,
State varchar( 40 ) ,
ZipCode varchar( 5 ) ,
Telephone varchar( 20 ) ,
CellPhone varchar( 20 ) ,
CellCarrier varchar( 20 ) ,
UserName varchar( 20 ) ,
PASSWORD varchar( 10 ) ,
SecretQuestion varchar( 80 ) ,
SecretAnswer varchar( 50 ) ,
UtilityCompanyID int( 10 ) ,
SwUpgrade int( 10 ) DEFAULT 1,
DateToSignIn timestamp DEFAULT 0000 -00 -0000 :00 :00 NOT NULL ,
LastLoginTime timestamp DEFAULT 0000 -00 -0000 :00 :00 NOT NULL ,
STATUS varchar( 20 ) DEFAULT 'Inacitve',
Email1 varchar( 60 ) ,
Email2 varchar( 60 ) ,
PoolID int( 10 ) ,
DeviceID int( 10 ) ,
Last_Modified_Timestamp timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL ,
PRIMARY KEY ( CustID )
) ENGINE = InnoDB DEFAULT CHARSET = latin1;

Phpmyadmin错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-00-00 00:00:00 NOT NULL,
    LastLoginTime timestamp DEFAULT 0000-00-00 00:00:00 ' at line 18 

知道我可能做错了吗?

5 个答案:

答案 0 :(得分:2)

你不应该把这些时间戳默认值放在“”中,即“0000-00-00 00:00:00”吗?

答案 1 :(得分:1)

您的默认时间戳值应该是这样的。

DEFAULT '0000-00-00 00:00:00' NOT NULL

答案 2 :(得分:0)

不确定默认构造的位置,但请尝试:

LastLoginTime timestamp DEFAULT '0000-00-00 00:00:00'

答案 3 :(得分:0)

来自manual

  

如果为a中的第一个TIMESTAMP列指定了DEFAULT值   表,它不被忽略。默认值可以是CURRENT_TIMESTAMP或a   恒定的日期和时间值。

  

为TIMESTAMP列指定其他自动默认值或更新   比第一个,你必须抑制自动初始化和   显式更新第一个TIMESTAMP列的行为   为其分配一个常量的DEFAULT值

工作查询

CREATE TABLE mytbl.customer(
CustID int( 10 ) NOT NULL AUTO_INCREMENT ,
FirstName varchar( 40 ) ,
LastName varchar( 40 ) ,
Street varchar( 50 ) ,
City varchar( 40 ) ,
State varchar( 40 ) ,
ZipCode varchar( 5 ) ,
Telephone varchar( 20 ) ,
CellPhone varchar( 20 ) ,
CellCarrier varchar( 20 ) ,
UserName varchar( 20 ) ,
PASSWORD varchar( 10 ) ,
SecretQuestion varchar( 80 ) ,
SecretAnswer varchar( 50 ) ,
UtilityCompanyID int( 10 ) ,
SwUpgrade int( 10 ) DEFAULT 1,
DateToSignIn timestamp DEFAULT 0 ,
LastLoginTime timestamp DEFAULT 0,
STATUS varchar( 20 ) DEFAULT 'Inacitve',
Email1 varchar( 60 ) ,
Email2 varchar( 60 ) ,
PoolID int( 10 ) ,
DeviceID int( 10 ) ,
Last_Modified_Timestamp timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL ,
PRIMARY KEY ( CustID )
) ENGINE = InnoDB DEFAULT CHARSET = latin1

答案 4 :(得分:0)

要指定除第一个列以外的TIMESTAMP列的自动默认值或更新,必须通过显式为其指定常量DEFAULT值来禁止第一个TIMESTAMP列的自动初始化和更新行为(例如,< strong> DEFAULT 0 或 DEFAULT'2003-01-01 00:00:00')。然后,对于另一个TIMESTAMP列,规则与第一个TIMESTAMP列的规则相同,只是如果省略DEFAULT和ON UPDATE子句,则不会自动初始化或更新。

SOURCE