【问题标题】:Create Table in spring r2dbc在 spring r2dbc 中创建表
【发布时间】:2019-11-06 16:21:38
【问题描述】:

我有一个用于 postgresql 数据库的 spring r2dbc 连接,并想创建一个表,

实际上相当于 SQL

CREATE TABLE IF NOT EXISTS name (id, bigint);

DatabaseClient 似乎只支持选择/插入,我该怎么做?

【问题讨论】:

标签: spring postgresql spring-boot r2dbc spring-data-r2dbc


【解决方案1】:

正如托马斯·安道夫在评论中所说的那样

.execute().sql()确实是正确的做法

在我的情况下,我需要在继续之前无限期阻止结果,所以我需要附加 .fetch().all().collectList().block();

【讨论】:

  • 您也可以调用execute(…).then() 而不是获取所有行。
【解决方案2】:

您不需要使用 DatabaseClient 来创建您的表。 所以当我遇到和你一样的问题时,我做了如下代码:

 fun postgresProcess(config: PostgresConfig): PostgresProcess {
        val runtime = PostgresStarter.getDefaultInstance()
        val exec = runtime.prepare(config)
        val postgres = exec.start()
        // connecting to a running Postgres and feeding up the database
        val conn = DriverManager.getConnection("jdbc:postgresql://$host:$port/$database", username, password)
        conn.createStatement().execute("CREATE TABLE customer ( id SERIAL PRIMARY KEY, firstname VARCHAR(100) NOT NULL, lastname VARCHAR(100) NOT NULL);")
        return postgres
    }

一开始,你可以做这样的事情,之后你就可以使用数据库客户端了。

我记得尝试 flyway 没有成功。我本来想使用 DatabaseClient。更多代码在我的 repo github

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-29
    • 2021-02-15
    • 2021-08-29
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多