2017-02-28 59 views
0
DROP TABLE IF EXISTS 'ci_sessions'; 
CREATE TABLE 'ci_sessions' ( 
    'session_id' varchar(40) COLLATE utf8_bin NOT NULL DEFAULT '0', 
    'ip_address' varchar(16) COLLATE utf8_bin NOT NULL DEFAULT '0', 
    'user_agent' varchar(120) COLLATE utf8_bin DEFAULT NULL, 
    'last_activity' int(10) unsigned NOT NULL DEFAULT '0', 
    'user_data' text COLLATE utf8_bin NOT NULL, PRIMARY KEY ('session_id'), 
    KEY 'last_activity_idx' ('last_activity')) 
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

我试着运行phpMyAdmin的这段代码和它说可能是有什么错在这里

#1064 - 你在你的SQL语法错误;检查对应于你的MySQL服务器版本正确的语法在1号线

+8

倒置逗号不是反引号 – Strawberry

+0

,所以我是否需要将所有倒立的昏迷替换为倒勾? – Lestah

+0

像我在下面回答,是的... – baao

回答

1

它在你的所有表和列名称相同的错误使用 “”附近ci_sessions'手册。您可以使用',而你应该使用反引号:

` 

所以这应该工作:

DROP TABLE IF EXISTS `ci_sessions`; 
CREATE TABLE `ci_sessions` (
    `session_id` varchar(40) COLLATE utf8_bin NOT NULL DEFAULT '0', 
    `ip_address` varchar(16) COLLATE utf8_bin NOT NULL DEFAULT '0', 
    `user_agent` varchar(120) COLLATE utf8_bin DEFAULT NULL, 
    `last_activity` int(10) unsigned NOT NULL DEFAULT '0', 
    `user_data` text COLLATE utf8_bin NOT NULL, PRIMARY KEY (`session_id`), 
    KEY `last_activity_idx` (`last_activity`)) 
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

一点题外话 - 您使用NOT NULL,然后由默认值设定为字符串0。经常。这表明不好的做法,或至少更多的工作为以后的查询。例如,A指定列last_activity指示空值应该被允许...

二旁注 - last_activity通常将是一个DATETIME列,不是int(10)

+0

unixtimestamp将是last_activity的有效值。 – Strawberry

+0

有效是@Strawberry。但更难以查询 – baao

+0

草莓谢谢问题解决 – Lestah