我尝试DESCRIBE TABLE...在 CockroachDB 中使用 Oracle 的语句并出现语法错误。什么是等效命令?
是否有一个简单的命令可以让我删除数据库中的所有表?我设置了用户/授权,所以我不想删除数据库本身,只删除其中的表。
我使用以下内容启动了一个 CockroachDB 容器:
docker run -d --name=node1 --hostname=node1 \
--network=db -p 26257:26257 -p 8080:8080 \
-v "${PWD}/sql:/cockroach/sql" \
-v "${PWD}/cockroach-data/node1:/cockroach/cockroach-data" \
cockroachdb/cockroach:v2.0.1 start --insecure
Run Code Online (Sandbox Code Playgroud)
该/sql目录有init.sql,这是一个我希望数据库运行的 SQL 脚本,这是我尝试运行的命令:
docker exec node1 \
"/cockroach/cockroach sql --insecure < /cockroach/sql/init.sql"
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
OCI runtime exec failed: exec failed: container_linux.go:348:
starting container process caused
"exec: \"/cockroach/cockroach sql --insecure < /cockroach/sql/init.sql\":
stat /cockroach/cockroach sql --insecure < /cockroach/sql/init.sql:
no such file or directory": unknown
Run Code Online (Sandbox Code Playgroud)
但是,如果我docker exec -ti node1 /bin/bash手动运行相同的命令,它就会起作用。
如何cockroach sql …
该Rows.Scan方法采用与 SQL 查询中的列数一样多的参数。
由于正在执行的查询是SHOW COLUMNS FROM my_table我不能省略任何我不需要的列(或者我可以吗?)。
有没有办法忽略查询结果集中不需要的某些字段?
下面是我的代码:
rows, err := db.Query("SHOW COLUMNS FROM " + r.Name)
DieIf(err)
//var field, dataType, ignoreMe1, ignoreMe2, ignoreMe3 string
var field, dataType string
for rows.Next() {
//This Place
// |
// V
if err := rows.Scan(&field, &dataType); err != nil {
DieIf(err)
}
r.Attributes[field] = Attribute{
Name: field,
DataType: dataType,
Constraint: false,
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
sql: expected 5 destination arguments in Scan, not 2
在MySQL中,我可以用来AUTO INCREMENT为我的应用程序的客户生成唯一的ID.使用CockroachDB时如何获得类似的功能?
当我使用 连接到 CockroachDB 时cockroach sql,我必须在所有表名前加上数据库名:
SELECT * FROM db.table1;
Run Code Online (Sandbox Code Playgroud)
如果我忘记指定数据库,例如
SELECT * FROM table1;
Run Code Online (Sandbox Code Playgroud)
我收到错误pq: table "table1" does not exist。
如何使用CockroachDB从SQL表中选择随机行?例如,如果我有许多问题,并且每次学生加载它们时我想生成不同的序列.
如何获取插入到表中的最后一个ID / SERIAL值?是否有类似于SQL Server的CockroachDB函数SCOPE_IDENTITY()?
我想为我的 Ecto 应用程序使用 CockroachDB Serverless。如何指定连接字符串?
我在尝试连接时收到这样的错误。
[error] GenServer #PID<0.295.0> terminating
** (Postgrex.Error) FATAL 08004 (sqlserver_rejected_establishment_of_sqlconnection) codeParamsRoutingFailed: missing cluster name in connection string
(db_connection 2.4.1) lib/db_connection/connection.ex:100: DBConnection.Connection.connect/2
Run Code Online (Sandbox Code Playgroud)
CockroachDB Serverless 表示通过在连接字符串中包含集群名称来进行连接,如下所示:
postgresql://username:<ENTER-PASSWORD>@free-tier.gcp-us-central1.cockroachlabs.cloud:26257/defaultdb?sslmode=verify-full&sslrootcert=$HOME/.postgresql/root.crt&options=--cluster%3Dcluster-name-1234
Run Code Online (Sandbox Code Playgroud)
但我不确定如何让 Ecto 通过其配置创建此连接字符串。
我正在尝试在本地使用 Prisma 和 Cockroachdb 。据我所知,对 CockroachDB 的官方支持正在进行中。
我有一个并行的本地 PostgreSQL 数据库,其中一切工作正常,并且我能够生成 Prisma 迁移以针对 Cockroachdb 手动运行。所有这些都有效,我最终得到了两个明显相同的模式。
但是,Prisma 中使用该connect功能的任何创建操作都会失败,并出现以下错误:
Invalid `prisma.mylinkedtable.create()` invocation:
Foreign key constraint failed on the field: `(not available)`
Run Code Online (Sandbox Code Playgroud)
以下是我的 schema.prisma 的关键部分:
datasource db {
provider = "postgresql"
url = "postgresql://user:pass@localhost:26257/mydb"
}
generator client {
provider = "prisma-client-js"
previewFeatures = ["cockroachdb"]
}
model MyLinkedEntity {
id Int @id @default(autoincrement())
myEntity MyEntity @relation(fields: [myEntityId], references: [id])
myEntityId Int
// ...
}
model MyEntity {
id Int @id @default(autoincrement())
// ... …Run Code Online (Sandbox Code Playgroud)