首页 > 解决方案 > 旧 SQL 版本的覆盖脚本可用于 5.6

问题描述

如果我对这个问题的基本理解不正确,我深表歉意。我对 SQL 不是很有经验,仍在学习。

我正在尝试为数据集生成一个表,并得到了这个脚本:

CREATE TABLE [dbo].[lobbying](
[uniqid] [varchar](36) NOT NULL, [registrant_raw] [varchar](110) NULL, [registrant] [varchar](50) NULL, [isfirm] [char](1) NULL,
[client_raw] [varchar](110) NULL, [client] [varchar](50) NULL,
[ultorg] [varchar](50) NULL,
[amount] [float] NULL,
[catcode] [char](5) NULL,
[source] [char] (5) NULL,
[self] [char](1) NULL,
[IncludeNSFS] [char](1) NULL,
[use] [char](1) NULL,
[ind] [char](1) NULL,
[year] [char](4) NULL,
[type] [char](4) NULL,
[typelong] [varchar](50) NULL, [affiliate] [char](1) NULL,
) ON [PRIMARY]

正如您可能知道的那样,它不起作用。该脚本于 2015 年更新,因此我认为问题出在版本上。我尝试使用 SQL Fiddle 找出导致问题的原因,并发现取出括号有帮助(这是有道理的,因为我遵循的教程没有为他们的表格使用任何括号)。但是,即使这样,我仍然收到错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'use char(1) NULL,
ind char(1) NULL,
year char(4) NULL,
type char(4) NULL,
typelo' at line 10

有人知道这里有什么问题吗?任何帮助将不胜感激。到目前为止,我已经为这个项目倾注了大约 4 个小时,但无法克服这个障碍。

标签: mysqlsql-servermysql-5.6

解决方案


用带反引号的括号替换名称就足够了,还可以删除类型 nqames 周围的括号

CREATE TABLE lobbying(
`niqid`varchar(36) NOT NULL
, `egistrant_raw`varchar(110) NULL
, `egistrant` varchar(50) NULL
, `isfirm` char(1) NULL,
`client_raw` varchar(110) NULL
, `client` varchar(50) NULL,
`ultorg`  varchar(50) NULL,
`amount` float NULL,
`catcode` char(5) NULL,
`source` char(5) NULL,
`self` char(1) NULL,
`IncludeNSFS` char(1) NULL,
`use` char(1) NULL,
`ind` char(1) NULL,
`year` char(4) NULL,
`type` char(4) NULL,
`typelong`  varchar(50) NULL
, `affiliate` char(1) NULL
) 

db<>在这里摆弄


推荐阅读