2016-11-08 182 views
0

我正在運行MySQL 5.5.47,並且有許多數據庫表的數據類型爲TINYINT(1)。我試圖將這些更改爲BOOLEAN但它不會改變它們。phpmyadmin不會將MySQL TINYINT(1)更改爲BOOLEAN數據類型

使用phpmyadmin 4.6.0然後去結構我使用下拉列將列設置爲BOOLEAN。這將執行以下查詢:

ALTER TABLE `feedback` CHANGE `tick_receive_updates` `tick_receive_updates` BOOLEAN NOT NULL; 

查詢成功運行。

當我查看結構時不更新:我認爲這是一個phpMyAdmin的錯誤列仍標記爲TINYINT(1)

起初,所以我跑

DESCRIBE feedback; 

不幸的是問題仍然存在 - 列沒有改變TINYINT(1)

這是爲什麼?

回答

3

這是正常行爲BOOLEAN只是TINYINT(1)

MySQL 5.7 Reference Manual - 12.1.1 Numeric Type Overview

BOOL一個同義詞,BOOLEAN

這些類型是TINYINT同義詞(1)。零值被認爲是 false。非零值被認爲是正確的:

+0

有趣。我想知道爲什麼他們提供BOOLEAN作爲一種選擇呢?我將接受這個解決方案,因爲當我創建* new *表(而不是修改現有的表)並將其設置爲BOOLEAN時,它確實在使用DESCRIBE或查看Structure選項卡時顯示爲TINYINT(1)。很奇怪! – Andy

+3

這不是一個選項,它是一個同義詞。 MySQL中有多個同義詞,並且有多個原因。 BOOLEAN是其他RDBMS上的真正數據類型,同義詞使開發人員可以更輕鬆地進行轉換。對於這一個,我沒有真正的其他解釋。 –

相關問題