2015-09-26 106 views
0

我想導入我的舊數據庫,但這給了我一些錯誤什麼使它不可能即時通訊也搜索谷歌30分鐘,我找不到任何解決方案?MySQL查詢錯誤#1064?

SQL-query: 


CREATE TABLE `UG_blogs` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `catid` int(11) NOT NULL, 
    `ownerid` int(11) NOT NULL, 
    `content` text NOT NULL, 
    `date` datetime NOT NULL DEFAULT TIMESTAMP, 
    PRIMARY KEY (`id`), KEY id(`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 


MySQL meldt: Documentatie 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' 
    PRIMARY KEY (`id`), KEY id(`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT C' at line 6 

回答

1

正確的默認值是CURRENT_TIMESTAMP

CREATE TABLE `UG_blogs` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `catid` int(11) NOT NULL, 
    `ownerid` int(11) NOT NULL, 
    `content` text NOT NULL, 
    `date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`), 
    KEY id(`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 

的SQL小提琴是here

編輯:

您必須使用一個老十歲上下的MySQL版本(好吧,沒那麼老,只是前5.6)。嗯,你不能默認一個datetime值(無觸發),所以你必須學會​​在TIMESTAMP值並學會愛時間戳功能:

CREATE TABLE `UG_blogs` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `catid` int(11) NOT NULL, 
    `ownerid` int(11) NOT NULL, 
    `content` text NOT NULL, 
    `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`), 
    KEY id(`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 
+0

這給了我以下錯誤:#1067 - 對「日期」 –

+0

我使用無效的默認值:44年5月5日,MariaDB的 但生病給它一個鏡頭 –

+0

@MennovanHout。 。 。 MariaDB * *(基本上)是MySQL,所以5.6或更高版本應該支持'datetime'和默認值。 –

0

首先解決方法:更改數據類型爲這樣

時間戳
CREATE TABLE `UG_blogs` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `catid` int(11) NOT NULL, 
    `ownerid` int(11) NOT NULL, 
    `content` text NOT NULL, 
    `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`), 
    KEY id(`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 

問題是:時間戳數據類型的範圍爲1970-01-01 00:00:01 UTC至2038-01-19 03:14:07。

所以第二個解決方案是,不要將datetime數據類型更改爲timestamp。但是你需要一個觸發器來設置默認值。