整数値を見る。Unsigned 属性を設定すると、フィールドの長さが上書きされるようです。
従来、MYSQL は BOOLEAN エイリアスを TINYINT(1) に変換します。inter-webs によると、MySQL 8.0.17 の時点で、整数データ型の表示幅の仕様は廃止されました。これには次の 2 つの例外があります。 TINYINT(1) ただし、TINYINT 値に UNSIGNED を設定すると、表示の長さが失われるというバグ (既知または未知の IDK) があります。
再現する手順:
BOOLEAN として使用することを意図したフィールドを持つテーブルを作成します。
CREATE TABLE
users
(id
int unsigned NOT NULL AUTO_INCREMENT ,user_name
varchar(50) NOT NULL,password
varchar(255) NOT NULL,is_active
tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (id
), ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;TINYINT(1) の表示長が実際に設定されていることを確認します。
テーブルを変更して is_active を UNSIGNED 値にします。
ALTER TABLE
users
CHANGE COLUMNis_active
is_active
TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' ;TINYINT に表示長がなくなっていることに注意してください。
リスト項目
期待される結果:
オプションが0または1になるため、「BOOLEAN」の正しいフィールド属性は符号なしであると主張します。負ではありません。したがって、TINYINT(1) の UNSIGNED 動作は符号付き動作と同じであり、フィールドの表示長が設定/保持されることを期待します。
質問:
他の誰かがこの動作に遭遇しましたか? 回避策に関するアイデアはありますか?現在、署名されたtinyintに固執しています...