2017-02-28 57 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