SQL建表语句报错求助:期望符号名(靠近")"位置164)
排查SQL建表语句报错问题
嘿,我来帮你捋捋这个SQL报错的事儿!你说自己的查询语句没问题,但遇到了这两个报错:
期望符号名!(靠近")",位置164);至少需要一个列定义。(靠近")",位置164)
先看看你提供的建表语句:
CREATE TABLE `detum` ( `idu` int(12) , `nik` varchar(10) , `nama` varchar(35) , `kdstore` int(4) , `nmstore` varchar(40) , `tglmsk` date , `shift` varchar(4) , `start` time , `end` time , `event` varchar(2) , `ln` varchar(1) , ... )
问题很明显啦——你的建表语句最后停在了ln varchar(1) ,...这里,相当于在列定义列表的末尾留了一个逗号,后面却没有对应的列名和类型定义,直接就到了闭合的)。MySQL在解析的时候,会认为你还没写完列定义,自然就会抛出“至少需要一个列定义”的错误。
修复方法也很简单:
- 如果你后面还有要加的列,把
...替换成完整的列定义(比如email varchar(50)这类),确保最后一列后面没有多余的逗号; - 如果已经没有其他列了,直接删掉最后那个逗号和未完成的
...,让语句以最后一列lnvarchar(1) 结尾,然后加上闭合的)以及必要的存储引擎、字符集配置(比如) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;)。
举个修复后的完整示例:
CREATE TABLE `detum` ( `idu` int(12) , `nik` varchar(10) , `nama` varchar(35) , `kdstore` int(4) , `nmstore` varchar(40) , `tglmsk` date , `shift` varchar(4) , `start` time , `end` time , `event` varchar(2) , `ln` varchar(1) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
这样应该就能顺利建表啦!
内容的提问来源于stack exchange,提问作者user4078328
相关产品推荐
相关产品推荐

