Von meinem Tisch Skript erstellen, habe ich das hasMultipleColors Feld als BIT definiert:MySQL immer wiederkehr BIT Werte als leere
hasMultipleColors BIT NOT NULL,
Wenn eine INSERT ausgeführt wird, gibt es keine Warnungen für diese geworfen oder die anderen BIT Felder, aber die Auswahl der Zeilen zeigt, dass alle BIT-Werte leer sind.
Manuell versuchen, diese Datensätze von der Befehlszeile aktualisieren gibt ungerade Wirkung - zeigt, dass der Datensatz übereinstimmte und geändert wurde (falls zutreffend), aber immer noch leer zeigt.
Server-Version: 5.5.24-0ubuntu0.12.04.1 (Ubuntu)
mysql> update pumps set hasMultipleColors = 1 where id = 1;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> select hasMultipleColors from pumps where id = 1;
+-------------------+
| hasMultipleColors |
+-------------------+
| |
+-------------------+
1 row in set (0.00 sec)
mysql> update pumps set hasMultipleColors = b'0' where id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select hasMultipleColors from pumps where id = 1;
+-------------------+
| hasMultipleColors |
+-------------------+
| |
+-------------------+
1 row in set (0.00 sec)
Irgendwelche Gedanken?
Warum verwenden Sie nicht 'BOOL' statt' BIT' dafür? Aus der Semantik deines Feldnamens würde es mehr Sinn ergeben. – Romain
Habe etwas über die Datentypen BOOL vs. BIT vs. TINYINT gelesen, und der Take-away war, dass MySQL BOOL sehr schlecht behandelt - nicht portierbar für andere RDBMS-Lösungen - daher ist es im Allgemeinen ideal, mit TINYINT zu arbeiten oder BIT (effizienter). – CdrXndr