我尝试创建一个字段作为一个 TINYINT(1), NOT NULLDEFAULT 的价值 -1 指示“未知”,但我从客户那里得到了这个错误:

错误更改 mytable: :您的SQL语法有错误;检查与您的MySQL Server版本相对应的手册,以获取正确的语法

我还尝试制作长度2并收到相同的消息

猜测 TINYINT 这类名称不是正确的数据类型,而是什么?

编辑:阅读Ed Cottrell的评论后,我使它起作用。我认为某处有一个额外的角色,这是我的客户(使用Mac的Querious)生成的陈述:

ALTER TABLE `DBName`.`MyTable`
CHANGE COLUMN `MyColumn` `MyColumn` TINYINT(1) NOT NULL DEFAULT -1  COMMENT ''
AFTER `MyOtherColumn`;

注意到那个 COMMENT 在那里确保一切都干净。

其他评论和答案也受到赞赏;我决定让 NULL 在这种情况下,平均未知

有帮助吗?

解决方案

我认为您应该将其存储一点(如果您关心存储尺寸),然后让 NULL 卑鄙的“未知”。

field bit(1) default NULL,

宣布一个领域似乎很奇怪 not null 然后具有特殊价值,从本质上讲意味着 NULL.

编辑:

以下语法在 SQL小提琴:

create table t (
  val int,
  flag tinyint(1) default -1
 );

“ works”之所以引号,是因为默认值将“ 1”而不是“ -1”打印 - 毕竟 (1) 只是打印一位数字。

也许在MySQL的一些早期版本中,它会在看到该错误时会产生错误 -1 无法正确显示。 (老实说,这会让我感到惊讶。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top