创建数据库表使用CONSTRAINT关键字时出错

失败:

CREATE TABLE IF NOT EXISTS `demo`(
    `id` INT ,
    `age` INT  CONSTRAINT c1 CHECK(`age`>=18),
    PRIMARY KEY(`id`)
);

成功:

CREATE TABLE IF NOT EXISTS `demo`(
    `id` INT ,
    `age` INT CHECK(`age`>=18),
    PRIMARY KEY(`id`)
);

是我CONSTRAINT的用法有问题吗,

目前官网已经查不到5.5的文档了,最早的5.7版本文档中对check是这么描述的

The CHECK clause is parsed but ignored by all storage engines.

大概意思就是check语法可以被解析,但是会被忽略。这和你描述的现象一致。
在5.7版本中,是没有 "CONSTRAINT CHECK"语法的,所以更老的5.5估计也没有

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]
    [partition_options]

create_definition: {
    col_name column_definition
  | {INDEX | KEY} [index_name] [index_type] (key_part,...)
      [index_option] ...
  | {FULLTEXT | SPATIAL} [INDEX | KEY] [index_name] (key_part,...)
      [index_option] ...
  | [CONSTRAINT [symbol]] PRIMARY KEY
      [index_type] (key_part,...)
      [index_option] ...
  | [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]
      [index_name] [index_type] (key_part,...)
      [index_option] ...
  | [CONSTRAINT [symbol]] FOREIGN KEY
      [index_name] (col_name,...)
      reference_definition
  | CHECK (expr)
}

但8.0版本是有这个语法的

[CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED]

并且创建完后 查看表信息如下:

/*DDL 信息*/------------

CREATE TABLE `demo` (
  `id` int(11) NOT NULL DEFAULT '0',
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk

那个约束条件还是没有添加上,也就是说任然可以添加age < 18的数据,这是为什么呢?
数据库:MSYQL 5.5
图形化工具 SQLyog