H2数据库执行INSERT语句报JdbcSQLSyntaxErrorException如何解决
报错原因
你的SQL语法报错核心原因是INSERT语句中VALUES后的字符串类型值没有使用英文单引号包裹,H2数据库会将无引号的内容识别为表名、列名这类标识符,而非你要插入的文本常量,因此触发语法校验异常。
修正要点
- 所有varchar字符串类型的字段插入值都需要用英文单引号
'包裹 - 你原语句中的SMTP服务器地址拼写错误,
demo.stmp.com应为demo.smtp.com,避免后续业务逻辑异常 - 你提供的建表语句末尾缺少闭合的右括号,执行建表前需要补全
正确的SQL语句
插入语句
INSERT INTO smtp_data(smtp_server, smtp_username, smtp_password, smtp_from, smtp_to) VALUES ('demo.smtp.com', 'demousername', 'demopassword', 'fromdemo@mail.com', 'todemo@mail.com');
修正后的建表语句
create table if not exists smtp_data( id int primary key auto_increment, smtp_server varchar(30) not null, smtp_username varchar(30) not null, smtp_password varchar(40) not null, smtp_from varchar(20) not null, smtp_to varchar(20) not null );
补充注意
如果插入的文本值本身包含单引号,需要将单引号转义为两个连续的单引号,比如要插入文本test'val,需要写为'test''val',避免字符串被提前截断触发语法错误。
内容的提问来源于stack exchange,提问作者mikegr3pe
相关产品推荐
相关产品推荐

