首页 > 解决方案 > H2 shell 不允许从表中选择

问题描述

我运行H2的shell工具:

java -cp h2-1.4.199.jar org.h2.tools.Shell

我愿意:

sql> show tables
...> ;
TABLE_NAME            | TABLE_SCHEMA
flyway_schema_history | PUBLIC
(1 row, 19 ms)

然后我想从那个表中选择:

sql> select * from public.flyway_schema_history;
Error: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "FLYWAY_SCHEMA_HISTORY" not found; SQL statement:
select * from public.flyway_schema_history [42102-199]

我也尝试不使用架构名称,同样的错误。为什么它不能从该表中选择,当它显示它存在时?

标签: h2

解决方案


H2 数据库默认区分大小写。

因此,当您用小写字母编写表名并在不带双引号的情况下对其进行查询时,它将使其变为大写并尝试与之匹配。

由于当前表名是小写的,你应该把它放在引号中,这样 H2 就不会强制它为大写。

select * from public."flyway_schema_history";


推荐阅读