现在很多服务器都有最新版本的MySQL - 在运行以下代码时会出错:
$drop_table = mysql_query("DROP TABLE IF EXISTS `$t_ads`");
$sqls[$t_ads] = "CREATE TABLE `$t_ads` (
`adid` int unsigned NOT NULL auto_increment,
`adtitle` varchar(100) NOT NULL default '',
`addesc` longtext NOT NULL,
`area` varchar(50) NOT NULL default '',
`email` varchar(50) NOT NULL default '',
`showemail` enum('0','1','2') NOT NULL default '0',
`password` varchar(50) NOT NULL default '',
`code` varchar(35) NOT NULL default '',
`cityid` smallint unsigned NOT NULL default '0',
`subcatid` smallint unsigned NOT NULL default '0',
`price` DECIMAL( 10, 2 ) NOT NULL default '0',
`othercontactok` enum('0','1') NOT NULL default '0',
`hits` int unsigned NOT NULL default '0',
`ip` varchar(15) NOT NULL default '',
`verified` enum('0','1') NOT NULL default '0',
`abused` int unsigned NOT NULL default '0',
`enabled` enum('0','1') NOT NULL default '0',
`createdon` datetime NOT NULL default '0000-00-00 00:00:00',
`expireson` datetime NOT NULL default '0000-00-00 00:00:00',
`timestamp` timestamp(14) NOT NULL,
`paid` enum('0','1','2') NOT NULL default '2',
PRIMARY KEY (`adid`),
KEY `subcatid` (`subcatid`),
KEY `cityid` (`cityid`),
KEY `verified` (`verified`),
KEY `enabled` (`enabled`),
KEY `paid` (`paid`)
) TYPE=MyISAM;";
具有旧版本mysql的服务器似乎接受了这一点,但新版本根本不接受它并给出错误。我有很多与之相关的错误,因为PHP数据库设置稍大一点。错误的一个例子如下:
#1064
- 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在'(14)NOT NULL,paid
枚举,NOT NULL默认'2',PRIMARY KEY(adid
),K'附近使用正确的语法在第21行
答案 0 :(得分:1)
代码的纯SQL部分看起来没问题(仅使用MySQL 5.6进行测试),但我通常建议不要使用timestamp
之类的关键字作为列名。该表将在MySQL 5.6中创建,但您将遇到两个警告:
TIMESTAMP(14)
,将其删除
MySQL 6.0。请改用TIMESTAMP
TYPE=storage_engine
已弃用,将在MySQL中删除
6.0。请改用ENGINE=storage_engine
如果这没有帮助,请发布您正在使用的实际MySQL版本。
答案 1 :(得分:0)
更改列名称不应该是mysql关键字'timestamp'和
chnage
`timestamp` timestamp(14) NOT NULL,
到
`<SOME OTHERNAME>` timestamp NOT NULL,