h2 - 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 就不会强制它为大写。
select * from public."flyway_schema_history";
推荐阅读
- android - 列表视图根本不可见
- java - 执行java类时如何在命令行参数中为属性指定路径
- java - 带有十六进制输入的 BigInteger NumberFormatException
- composer-php - 在更新时更新 json 文件中的作曲家依赖项
- html - 如何让iOS上的网页在退出全屏时继续播放视频
- xml - XML Twig:更新单个条目
- r-commander - R Commander 导入 Excel 文件
- karate - 使用空手道匹配部分响应
- swift - 快速输入 String() 和 String.self 有什么区别?
- c# - 一个项目中有许多 COM 对象