获取“org.h2.jdbc.JdbcSQLException:找不到表“BOOK_PUBLISHERS”;SQL 语句:”

Posted

技术标签:

【中文标题】获取“org.h2.jdbc.JdbcSQLException:找不到表“BOOK_PUBLISHERS”;SQL 语句:”【英文标题】:Getting "org.h2.jdbc.JdbcSQLException: Table "BOOK_PUBLISHERS" not found; SQL statement:" 【发布时间】:2016-12-06 21:29:56 【问题描述】:

使用 Spring Boot、Spring Data JPA 和 H2 内存数据库来映射多对多关系。

我有两张表,其中包含实体 Book & Publisher。他们的多对多关系在哪里发货

创建连接表以将Book_IdPublisher_id 作为外键存储在book_publisher 表中,如下所示。

create table book_publisher 
(
  book_id number not null,
  publisher_id number not null,
  PRIMARY KEY (book_id, publisher_id),
  CONSTRAINT fk_bookpublisher_book FOREIGN KEY (book_id) REFERENCES CURRENCY (id) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT fk_bookpublisher_publisher FOREIGN KEY (publisher_id) REFERENCES VENUE (id) ON DELETE CASCADE ON UPDATE CASCADE
 ); 

我没有为book_publisher 表编写域类。

但我得到了:

org.h2.jdbc.JdbcSQLException:找不到表“BOOK_PUBLISHERS”; SQL 语句:插入 book_publisher (book_id, publisher_ID) 值 (?, ?) [42102-191] "同时存储书籍对象(书籍类有 发布者对象作为“SET”变量

如何解决这个错误?

【问题讨论】:

【参考方案1】:

如果您正在运行您提到的创建脚本,它将在表 CURRENCY 和 VENUE 之间创建多对多关系。所以我会说你分享的代码 sn-p 是错误的,这可能是表 BOOK_PUBLISHER 没有成功创建的原因。

创建 many_to_many 关系(在表 BOOK 和 PUBLISHER 之间)的正确 SQL 代码应该是:

create table book_publisher 
(
  book_id number not null,
  publisher_id number not null,
  PRIMARY KEY (book_id, publisher_id),
  CONSTRAINT fk_bookpublisher_book FOREIGN KEY (book_id) REFERENCES BOOK (id) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT fk_bookpublisher_publisher FOREIGN KEY (publisher_id) REFERENCES PUBLISHER (id) ON DELETE CASCADE ON UPDATE CASCADE
 ); 

【讨论】:

我刚刚根据您的评论更改了脚本。我仍然得到同样的例外。现在创建了名为“BOOK_PUBLISHER”的表,但应用程序仍然不会通过抛出错误将记录插入到该“BOOK_PUBLISHER”中。 @SatishKonda 请分享新的错误堆栈跟踪。它不能包含相同的异常。您的第一个例外是表 BOOK_PUBLISHER 不存在

以上是关于获取“org.h2.jdbc.JdbcSQLException:找不到表“BOOK_PUBLISHERS”;SQL 语句:”的主要内容,如果未能解决你的问题,请参考以下文章

java反射获取属性值

Shell 获取路径

iOS 获取文件大小

根据日期字符串获取星期几,日期获取星期,时间获取星期,js获取星期

js如何获取时间点?

iOS 获取设备的各种信息的方法