首页 > 解决方案 > MYSQL 枚举;无效的语法

问题描述

我正在执行一个我在其他环境中多次执行的 SQL 命令,但不能成为导致此语法错误的原因。

这是代码:

CREATE TABLE Customer
(
    customer_id INT IDENTITY (1,1) PRIMARY KEY,
    DOB DATETIME,
    Gender ENUM('M', 'F'),
    city_code (6) NOT NULL
)

我收到一个错误:

消息 102,级别 15,状态 1,第 7 行
'M' 附近的语法不正确

如果有人有我公然失踪的东西的指针,请指路。我正在使用 Microsoft MySql 2014 Express Edition

标签: mysql

解决方案


当看到Gender ENUM('M', 'F')和错误

消息 102,级别 15,状态 1,第 7 行
'M' 附近的语法不正确。

我很确定您在这里混淆了 RDMS SQL 方言语法。

由于 SQL Server 不知道ENUM数据类型,因此这是 MySQL 数据类型。

这适用于 MySQL

CREATE TABLE Customer
(
    Gender ENUM('M', 'F')
); 

INSERT INTO Customer (Gender) VALUES('M');
INSERT INTO Customer (Gender) VALUES('F');


# : Error: WARN_DATA_TRUNCATED: Data truncated for column 'Gender' at row 1
#INSERT INTO Customer (Gender) VALUES('A'); 

演示..

在 SQL Server 上模拟/模拟这个的一个选项是有一个CHECK约束:

CREATE TABLE Customer
(
    Gender CHAR(1) CHECK(Gender IN ('M', 'F'))
); 

INSERT INTO Customer (Gender) VALUES('M');
INSERT INTO Customer (Gender) VALUES('F');

演示

使用

INSERT INTO Customer (Gender) VALUES('A');

会导致错误

INSERT 语句与 CHECK 约束列“性别”冲突

笔记

city_code (6) NOT NULL缺少数据类型。


推荐阅读