2016-11-14 47 views
0

我有一個名爲'users'的現有MySQL(版本5.6.12)表,並且試圖通過php(版本5.4.12)設置列默認值,例如:MySQL SET DEFAULT返回錯誤:查詢爲空

$query = "ALTER TABLE users ALTER username SET DEFAULT NULL"; 
$result = mysqli_query($query); 

但是,這會生成一個SQL錯誤(導致消息'查詢爲空')。 'username'是一個VARCHAR(200)類型的列。

使用帶引號的文字(如'John')作爲默認值會導致相同的錯誤。 (只是踢,儘管我正在使用MySQL我也嘗試根據SQL/MS Access或Oracle語法修改查詢,但它仍然不起作用)。

我在做什麼錯?

編輯:問題解決了。上面的查詢很好,沒有錯。

我做了一個令人難以置信的愚蠢的錯誤,忘記在$query$標誌,即我寫的代碼$result = mysqli_query(query);

(只要你知道,我有幾十年經驗的程序員。)

+1

我猜該命令應該如下所示:'ALTER TABLE users MODIFY ....' – 1000111

+0

它不適合你,因爲mysqli_query()需要兩個參數....查看手冊 – nospor

+0

@ 1000111好的猜測 - 然而MODIFY也不起作用。 – Stefan

回答

0

變化查詢像下面

$query = "ALTER TABLE users MODIFY Column username VARCHAR(200) NULL DEFAULT NULL"; 

$query = "ALTER TABLE users CHANGE Column username username VARCHAR(255) NULL DEFAULT NULL"; 
-1

在MySQL中,您使用反引號[`]引用文字,不要使用引號[']。另一方面,每個DDBB引擎都使用它稍微不同的SQL風格。無論如何,它們中的大多數都能夠解釋常見子集,如各種活動標準SQL89,SQL92,SQL99等等所描述的。

總之,你的SQL是錯誤的,關於MySQL期望它是什麼。您必須通過使用不同的SQL引擎,在反覆試驗的基礎上構建SQL技能,直到您可以爲每個引擎提供他們期望的SQL變體。只是不要放棄並堅持查詢。簡化它,運行較短的字符串,直到找到可用的字符串爲止,然後通過添加更小的字詞來改進它,直到達到目標爲止。

+0

這對我根本沒有幫助。 – Stefan

+0

請您:先幫助自己。我試圖將您置於上下文中,以便您可以自行解決您的問題。分析你的查詢中的每個字節並給你正確的一個是做作業。 –

+0

在這篇文章中你沒有說我和大多數人都不知道的。當我的問題是一個非常具體的問題時,這太籠統了。事實上,由於你所做的假設,這幾乎是侮辱 - 這就像你告訴一個小孩他應該只是問題解決他的問題。零幫助。 – Stefan

0

我用我的網站

$query = "ALTER TABLE 'users' CHANGE 'username' 'username' VARCHAR(100) NULL DEFAULT NULL"; 
$result = mysqli_query($query); 
0

問題解決了這一個。查詢實際上很好,沒有錯。

我做了一個令人難以置信的愚蠢的錯誤,忘記在$query$標誌,即我寫的代碼$result = mysqli_query(query);

(只要你知道,我有幾十年經驗的程序員。)

+0

不要吹牛隻是說你犯了一個錯誤,並已經意識到它 –

+0

@JacksonSiro我曾經證明,即使經過多年的經驗,我仍然愚蠢到做出這樣的錯誤。顯然你很難理解這一點。 – Stefan

+0

好的,先生。程序員需要一個'雙重' –