You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建ec_recurring表时enum与cast附近语法错误的原因咨询

问题分析与解决方案

从你给出的错误提示Msg 102, Level 15, State 1可以判断,你是在SQL Server环境中执行这段原本为MySQL编写的SQL代码,这就是语法错误的核心原因——两种数据库的语法规则不兼容,具体问题出在以下两点:

1. enum类型是MySQL专属,SQL Server不支持

你代码里的enum('day','week','semi_month','month','year')是MySQL特有的枚举类型,但SQL Server并没有这个数据类型。当SQL Server解析到enum后的'day'时,无法识别这个语法,直接抛出了语法错误。

修正方案:
可以用varchar类型配合CHECK约束来实现枚举的效果,比如:

[frequency] varchar(20) NOT NULL CHECK ([frequency] IN ('day','week','semi_month','month','year'))

2. cast(10 as int) unsigned的语法完全错误

这段写法存在两个问题:

  • unsigned是MySQL中整数类型的修饰符,SQL Server不支持无符号整数类型(如果需要限制为正整数,可以用CHECK约束实现);
  • cast(10 as int)是用来转换值的函数,不能用来定义列的数据类型——你想要的应该是指定列的整数长度,在SQL Server中直接写int(或tinyint/smallint根据实际需求)即可,不需要用cast。

修正方案:
把类似[duration] cast(10 as int) unsigned NOT NULL的代码改成:

[duration] int NOT NULL CHECK ([duration] > 0)

如果需要更小的整数范围,也可以用tinyint(0-255)或smallint(-32768到32767),配合CHECK约束确保为正整数。

修正后的完整SQL示例(适配SQL Server)

CREATE TABLE ec_recurring ( 
    [recurring id] int NOT NULL IDENTITY, 
    [price] decimal(10,4) NOT NULL, 
    [frequency] varchar(20) NOT NULL CHECK ([frequency] IN ('day','week','semi_month','month','year')), 
    [duration] int NOT NULL CHECK ([duration] > 0), 
    [cycle] int NOT NULL CHECK ([cycle] > 0), 
    [trial status] tinyint(4) NOT NULL, 
    [trial price] decimal(10,4) NOT NULL, 
    [trial frequency] varchar(20) NOT NULL CHECK ([trial frequency] IN ('day','week','semi_month','month','year')), 
    [trial duration] int NOT NULL CHECK ([trial duration] > 0), 
    [trial cycle] int NOT NULL CHECK ([trial cycle] > 0), 
    [status] tinyint(4) NOT NULL, 
    [sort order] int NOT NULL, 
    [date created] datetime2 NOT NULL, 
    [date modified] datetime2 NOT NULL, 
    [created by] varchar(20) NOT NULL, 
    [modified by] varchar(20) NOT NULL, 
    [active] tinyint(4) NOT NULL, 
    PRIMARY KEY ([recurring id]) 
);

(注:SQL Server不支持ENGINE=MyISAM和AUTO_INCREMENT(用IDENTITY替代),CHARSET=utf8也不需要,SQL Server默认编码适配需求)

内容的提问来源于stack exchange,提问作者Vino Thini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:51:56