1

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

等效于 SQL

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

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

4

2 回答 2

0

您不需要使用 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

于 2019-06-24T20:54:43.773 回答
0

正如托马斯安道夫在评论中所说

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

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

于 2019-06-25T18:22:49.563 回答