在 spring r2dbc 中创建 Table
Create Table in spring r2dbc
我有一个用于 postgresql 数据库的 spring r2dbc 连接,我想创建一个 Table,
实际上相当于 SQL
CREATE TABLE IF NOT EXISTS name (id, bigint);
DatabaseClient 似乎只支持 select/insert,我该怎么做?
您不需要使用 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。更多代码在我的仓库 github
正如 Thomas Andolf 在评论中所说
.execute().sql()
确实是正确的做法
在我的例子中,我需要在继续之前无限期地阻止结果,所以我需要附加 .fetch().all().collectList().block();
我有一个用于 postgresql 数据库的 spring r2dbc 连接,我想创建一个 Table,
实际上相当于 SQL
CREATE TABLE IF NOT EXISTS name (id, bigint);
DatabaseClient 似乎只支持 select/insert,我该怎么做?
您不需要使用 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。更多代码在我的仓库 github
正如 Thomas Andolf 在评论中所说
.execute().sql()
确实是正确的做法
在我的例子中,我需要在继续之前无限期地阻止结果,所以我需要附加 .fetch().all().collectList().block();