2015-06-19 138 views
-1

我有一个标准的LAMP配置(apache2,mysql,php5),在ubuntu上运行,我只是在我的终端中输入mysql命令。我以root身份登录到mysql命令行。到目前为止,我已经创建了一个新的数据库,但是现在出现了麻烦mysql语法错误1064(42000)

我想创建一个简单的表,但得到一个MySQL语法错误,无法弄清楚我做错了什么。

这是错误:

ERROR 1064 (42000): 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 ')' at line 10 

这是我的查询:

CREATE TABLE IF NOT EXISTS `customers` (
    `uid` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `name` varchar(50) NOT NULL, 
    `email` varchar(50) NOT NULL, 
    `phone` varchar(100) NOT NULL, 
    `password` varchar(200) NOT NULL, 
    `address` varchar(50) NOT NULL, 
    `city` varchar(50) NOT NULL, 
    `created` datetime NOT NULL DEFAULT TIMESTAMP 
); 

不知道什么是错的诚实。

回答

0

您可以指定默认值current_timestamp不仅仅是timestamp

CREATE TABLE IF NOT EXISTS `customers` (
    `uid` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `name` varchar(50) NOT NULL, 
    `email` varchar(50) NOT NULL, 
    `phone` varchar(100) NOT NULL, 
    `password` varchar(200) NOT NULL, 
    `address` varchar(50) NOT NULL, 
    `city` varchar(50) NOT NULL, 
    `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
); 
0

timestamp不是一个值。我猜你打算用默认的当前时间戳填充created,这将是函数调用CURRENT_TIMESTAMP()。完整的语句:

CREATE TABLE IF NOT EXISTS `customers` (
    `uid` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `name` varchar(50) NOT NULL, 
    `email` varchar(50) NOT NULL, 
    `phone` varchar(100) NOT NULL, 
    `password` varchar(200) NOT NULL, 
    `address` varchar(50) NOT NULL, 
    `city` varchar(50) NOT NULL, 
    `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP() 
); 
0

TIMESTAMP是无效的,应该是CURRENT_TIMESTAMP,所以你的代码必须

CREATE TABLE IF NOT EXISTS `customers` (
    `uid` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `name` varchar(50) NOT NULL, 
    `email` varchar(50) NOT NULL, 
    `phone` varchar(100) NOT NULL, 
    `password` varchar(200) NOT NULL, 
    `address` varchar(50) NOT NULL, 
    `city` varchar(50) NOT NULL, 
    `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP 
);