我已經在MySQL創建一個表作爲MySQL的比特值出口DML問題
create table bittest (id int(11),constant bit(1) default b'0');
然後,
insert into bittest(id) values (1);
選擇查詢得到打印爲
+------+----------+
| id | constant |
+------+----------+
| 1 | |
+------+----------+
1 row in set (0.00 sec)
顯然的常數值沒有顯示爲位。
當我使用mysqldump INSERT語句做出口被導出爲
INSERT INTO `bittest2` VALUES (1,'\0');
這是造成問題,因爲我不希望空值插入做。
有沒有解決這個問題的方法? MySQL版本5.7.13
的可能的複製[使用SELECT時無法看到MySQL的位字段值(http://stackoverflow.com/questions/14248554/cant-see-mysql-bit-field-使用時選擇的值) – Solarflare
問題是類似的,但是不能解決導出問題。 – rohitpal
'\ 0'不是'null'。我不確定爲什麼鏈接的問題沒有回答你的問題,但'b'0'與'\ 0'是一樣的('\ 0'中的所有位都是0,它通常不是8位想想當你看到'\ 0'時)。一點不是一個整數,如果你重新導入它(用你的'insert')就可以正常工作。它實際上也會與0一起工作,因爲它會正確地轉換它,但位不是整數。如果你想有一個整數,可以使用一個整數'tinyint(1)'或其同義詞'bool'。 (在某些版本之前,mysql曾使用'tinyint'作爲'bit',但將其更改爲更符合標準)。 – Solarflare