H2 - 使用 SQL 语句“SELECT * FROM null T”访问链接表时出错
Posted
技术标签:
【中文标题】H2 - 使用 SQL 语句“SELECT * FROM null T”访问链接表时出错【英文标题】:H2 - Error accessing linked table with SQL statement "SELECT * FROM null T" 【发布时间】:2019-09-28 10:44:30 【问题描述】:我尝试在我的 Java 应用程序中创建链接表。
Statement stmtH2 = DBconnect.connH2.createStatement()
String linkedTable = ("CREATE LINKED TABLE tableName('', 'jdbc:mysql://localhost:3306/DBname', 'root', '', 'tableName');";
stmtH2.execute(linkedTable)
String query = "SELECT * FROM tableName WHERE Sex = 'F' ORDER BY Cod";
stmtH2.executeUpdate(query);
在 Java 中我遇到了这个错误:
org.h2.jdbc.JdbcSQLException: Column "COD" not found; SQL statement:
当我尝试在 localhost:8082 中查看运行 SELECT * FROM tableName
的表时,出现错误:
Error accessing linked table with SQL statement "SELECT * FROM null T", cause: "org.h2.jdbc.JdbcSQLException: Class ""com.mysql.jdbc.Driver"" not found [90086-175]"; SQL statement:
SELECT * FROM tableName [90111-175] 90111/90111 (Help)
为什么找不到“COD”列?
【问题讨论】:
Error accessing linked table with SQL statement "SELECT * FROM null T"
-> 在 Java 应用程序中看到 NULL
总是很可疑......我建议分享更多 Java 和 MySQL/h2 代码..
我编辑了添加细节的问题
【参考方案1】:
您的应用程序缺少com.mysql.jdbc.Driver
。将其添加到应用程序的类路径中。
【讨论】:
我在类路径中找到了它,因为我还有其他可用的语句 错误信息明确指出H2的classpath中没有com.mysql.jdbc.Driver
。如果您使用 H2 服务器,则需要将此驱动程序添加到其类路径中。 H2 1.3.175 也很旧,你不应该使用它。使用一些最新版本,例如 1.4.199。注意:需要将旧数据库导出到 1.3.175 中的 SQL 脚本并在 1.4.199 中新的空数据库中执行,旧版 PageStore 数据库的自动迁移并不总是正常工作。
正如我在之前的评论中所说,我在类路径中有 Driver,因为我的应用程序中还有其他语句可以创建链接表,然后从这些链接表中进行选择。与缺少驱动程序相关的错误发生在 H2 控制台中。在我的应用程序中出现了 SQLException。我在我的应用程序中有类似的选择语句,但使用不同的表并且它们可以工作。只有表tableName
不起作用。
您是否也从 H2 控制台创建了其他表?你的CREATE LINKED TABLE
命令到底长什么样?什么是完整的堆栈跟踪(您需要单击错误消息才能打开它)?
您需要使用带引号的名称(用双引号括起来),例如 "Cod"
和 "Sex"
来访问名称中包含小写字符的列。 H2 的最新版本将链接表的列名从 MySQL 转换为大写以避免此类问题,但您使用的是旧版本。以上是关于H2 - 使用 SQL 语句“SELECT * FROM null T”访问链接表时出错的主要内容,如果未能解决你的问题,请参考以下文章
org.h2.jdbc.JdbcSQLException:未知数据类型:“DATEADD”; SQL 语句
如何通过 1 条 sql 语句为 H2 数据库删除和添加多个约束
H2 - 使用 SQL 语句“SELECT * FROM null T”访问链接表时出错
org.h2.jdbc.JdbcSQLSyntaxErrorException:SQL 语句“CREATE[*] SCHEMA DATABASE”中的语法错误; SQL 语句:
获取“org.h2.jdbc.JdbcSQLException:找不到表“BOOK_PUBLISHERS”;SQL 语句:”