2012-01-06 5 views
0

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 

Любая идея, что я могу делать неправильно?

+0

Без проверки полей Отметка времени создания выглядеть неправильно - вы уверены, что эти работы? DateToSignIn timestamp DEFAULT 0000 -00 -0000: 00: 00 NOT NULL, LastLoginTime timestamp DEFAULT 0000 -00 -0000: 00: 00 NOT NULL, –

ответ

2

Не должны ли вы помещать эти значения по умолчанию в «", т. Е. "0000-00-00 00:00:00"?

1

Ваше значение времени по умолчанию должно быть таким.

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

Не знаете, где вы получили конструкцию по умолчанию, но попробуйте:

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

из manual

If a DEFAULT value is specified for the first TIMESTAMP column in a table, it is not ignored. The default can be CURRENT_TIMESTAMP or a constant date and time value.

и

To specify automatic default or updating for a TIMESTAMP column other than the first one, you must suppress the automatic initialization and update behaviors for the first TIMESTAMP column by explicitly assigning it a constant DEFAULT value

работает запрос

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 
0

Чтобы задать автоматическое значение по умолчанию или обновление для TIMESTAMP столбца, кроме первого, вы должны подавлять автоматические инициализации и обновления поведения для первого столбца TIMESTAMP путем явного присвоения ему постоянное значение DEFAULT (например, DEFAULT 0 или DEFAULT '2003-01-01 00:00:00'). Затем для другого столбца TIMESTAMP правила те же, что и для первого столбца TIMESTAMP, за исключением того, что если вы опускаете оба предложения DEFAULT и ON UPDATE, автоматическая инициализация или обновление не происходит.

SOURCE

Смежные вопросы