mysql - 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
解决方案
当看到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
缺少数据类型。
推荐阅读
- reactjs - React Router Link 不在自定义历史记录中保留状态
- python - 用 Python 在 Plotly 中分组图例
- python - 使用 Python Camelot 从 PDF 中提取文本框内容
- sql - Greenplum 查询性能
- javascript - 是否可以一次性过滤和修改 Javascript 数组的内容?
- arrays - C 创建 PGM 图像的参数编号
- android - 视图未对齐到 LinearLayout 的顶部
- r - 在大量小标题上改变新列
- node.js - 纽约市报道没有看到快速路线上使用的导入功能
- tensorflow - 在 AWS 上运行 TensorFlow Extended (TFX)