Vertx:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象:ACHAT
Posted
技术标签:
【中文标题】Vertx:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象:ACHAT【英文标题】:Vertx : java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: ACHAT 【发布时间】:2016-04-12 09:37:50 【问题描述】:早上好, 我想使用 odbc 将我的 vertx 应用程序与 Sql 数据库连接,但是当我运行我的代码时出现一个奇怪的错误:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象:ACHAT
我试图删除 ?shutdown 但它仍然是同样的错误
这是我的代码:
public void start(Future<Void> startFuture)
String file="/Test1";
Router router = Router.router(vertx);
router.route(file).handler(routingContext ->
HttpServerResponse response = routingContext.response();
response.setChunked(true);
JsonObject config = new JsonObject()
.put("url", "jdbc:hsqldb:mem:odbcName?shutdown=true")
.put("user", "sa")
.put("password", "****")
.put("driver_class", "org.hsqldb.jdbcDriver")
.put("max_pool_size", 30);
JDBCClient client = JDBCClient.createShared(vertx, config);
client.getConnection(res ->
if (res.succeeded())
SQLConnection connection = res.result();
connection.query("select id from dbo.achat", res2 ->
if (res2.succeeded())
System.out.println("oki");
else System.out.println(res2.cause().toString());
);
else
System.out.println("Cnx failed !!");
);
routingContext.vertx().setTimer(8000, tid -> routingContext.response().end());
);
对于我的服务器:
vertx.createHttpServer()
.requestHandler(router::accept)
.listen(8085, "localhost", res ->
if (res.succeeded())
startFuture.complete();
else
startFuture.fail(res.cause());
);
【问题讨论】:
【参考方案1】:从 Java 应用程序到 HSQLDB 的连接是通过 JDBC,而不是 ODBC。您的连接设置使用 JDBC。
下面的行创建了一个到内存数据库的连接,当你开始时它是空的:
put("url", "jdbc:hsqldb:mem:odbcName?shutdown=true")
必须先创建架构DBO
和表ACHAT
,然后才能访问它。
【讨论】:
感谢 fred 的回复,但还是有点不清楚,仅使用我的数据库名称不应该解决我的问题。对于我的 Achat 表,我想 Vertx 可以从连接中读取它。 (我已经在我的 sql 数据库中创建了它)。问候。 找出真正的数据库名称和连接类型,并使用此信息获取连接。 当我将配置更改为时出现错误: .put("url", "jdbc:hsqldb:url://localhost;onp;user=sa;password=sa;") 2016- 04-12T13:14:22.391+0100 SEVERE 无法重新打开数据库 org.hsqldb.HsqlException: 数据库锁获取失败: lockFile: org.hsqldb.persist.LockFile@91823327[file =null, exists=false, locked=false, valid =false, ] 方法:setPath 原因:java.io.IOException: La syntaxe du nom de fichier, de répertoire ou de volume est wronge以上是关于Vertx:java.sql.SQLSyntaxErrorException:用户缺少权限或找不到对象:ACHAT的主要内容,如果未能解决你的问题,请参考以下文章