H2数据库建表语法错误原因及解决方法咨询
问题原因与解决方案
错误原因
month是H2数据库的保留关键字,直接作为列名使用会触发语法错误。MySQL对保留字的限制相对宽松,允许直接使用这类关键字作为标识符,因此你的语句在MySQL中能正常执行,但在H2中不行。
解决方法
有两种可行的修复方式:
方式1:用反引号包裹保留字列名
在H2兼容MySQL的模式下,用反引号()将month`括起来,使其被识别为普通标识符:
CREATE TABLE data2 ( end_lat DOUBLE, end_lng DOUBLE, member_casual CHAR(7) UNIQUE, `month` INTEGER, week INTEGER, day INTEGER, Year INTEGER, day_of_week CHAR(10), tod TIME, ride_length INTEGER );
方式2:修改列名避免使用保留字
直接将month替换为非保留字的列名(比如ride_month),这种方式更规范,无需依赖特殊符号:
CREATE TABLE data2 ( end_lat DOUBLE, end_lng DOUBLE, member_casual CHAR(7) UNIQUE, ride_month INTEGER, week INTEGER, day INTEGER, Year INTEGER, day_of_week CHAR(10), tod TIME, ride_length INTEGER );
内容的提问来源于stack exchange,提问作者Rahul Garigipati
相关产品推荐
相关产品推荐

