我尝试将字段创建为TINYINT(1)
,NOT NULL
和DEFAULT
值 -1 以表示“未知”,但我收到此错误来自我的客户:
更改 MyTable 时出错:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法
我也试过制作长度为2并得到相同的信息
猜测TINYINT
不是这种指定的正确数据类型,但它是什么?
ALTER TABLE `DBName`.`MyTable`
CHANGE COLUMN `MyColumn` `MyColumn` TINYINT(1) NOT NULL DEFAULT -1 COMMENT ''
AFTER `MyOtherColumn`;
注意COMMENT
那里并确保一切都干净。
赞赏其他评论和答案;在这种情况下,我决定让NULL
意味着未知
答案 0 :(得分:3)
我认为你应该存储一下(如果你关心存储空间大小),让NULL
表示“未知”。
field bit(1) default NULL,
将某个字段声明为not null
然后具有一个特殊值,这实际上意味着NULL
,这似乎很奇怪。
编辑:
以下语法在SQL Fiddle上“有效”:
create table t (
val int,
flag tinyint(1) default -1
);
“works”在引号中,因为默认值打印为“1”而不是“-1” - 毕竟,(1)
只是打印一位数。
也许在某些早期版本的MySQL中,当它看到-1
无法正确显示时会产生错误。 (说实话,这会让我感到惊讶。)