Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql pq:表上的插入或更新违反外键约束_Postgresql_Go_Sqlx - Fatal编程技术网

Postgresql pq:表上的插入或更新违反外键约束

Postgresql pq:表上的插入或更新违反外键约束,postgresql,go,sqlx,Postgresql,Go,Sqlx,正在尝试将gqlgen与sqlx一起使用gqlgen生成的todo和user结构: 包模型 类型NewTodo结构{ 文本字符串`json:“Text”db:“Text”` UserID int64`json:“user\u id”db:“user\u id”` } 类型Todo结构{ ID int64`json:“ID”` 文本字符串`json:“Text”db:“Text”` Done bool`json:“Done”db:“Done”` User*User`json:“User”` } 类

正在尝试将
gqlgen
sqlx
一起使用
gqlgen
生成的
todo
user
结构:

包模型
类型NewTodo结构{
文本字符串`json:“Text”db:“Text”`
UserID int64`json:“user\u id”db:“user\u id”`
}
类型Todo结构{
ID int64`json:“ID”`
文本字符串`json:“Text”db:“Text”`
Done bool`json:“Done”db:“Done”`
User*User`json:“User”`
}
类型用户结构{
ID int64`json:“ID”`
名称字符串`json:“Name”db:“Name”`
}
这是数据库(postgres)架构:

var模式=`
创建表用户(
id BIGSERIAL主键,
名称VARCHAR(255),
在TIMESTAMPTZ处创建的_不是空默认值(now()),
更新了TIMESTAMPTZ处的_NOT NULL默认值(now())
);
创建表TODO(
id BIGSERIAL主键,
文本文本,
完成布尔运算,
user_id BIGINT NOT NULL引用删除级联上的用户(id),
在TIMESTAMPTZ处创建的_不是空默认值(now()),
更新了TIMESTAMPTZ处的_NOT NULL默认值(now())
);
`
这是插入突变/功能:

。。。
func(r*mutationResolver)CreateTodo(ctx context.context,input model.NewTodo)(*model.Todo,error){
log.Println(“>>input.Text:”,input.Text)//一个待办事项
log.Println(“>>input.Text.Type:”,reflect.TypeOf(input.Text))//字符串
log.Println(“>>input.UserID:”,input.UserID)//1
log.Println(“>>input.UserID.Type:”,reflect.TypeOf(input.UserID))//int64
db:=db.Connect()
tx:=db.MustBegin()
id,err:=tx.MustExec(“插入TODO(文本,用户id)值($1,$2)”,input.text,input.UserID)。LastInsertId()
如果错误!=零{
log.Fatalln(错误)
}
tx.Commit()
return&model.Todo{ID:ID},nil
}
当我进行新的todo变异时,它抛出内部系统错误:

pq: insert or update on table "todos" violates foreign key constraint "todos_user_id_fkey"

我哪里做错了?

users
中是否有
id
=1的记录?(外键约束阻止您在
TODO
中插入用户id为
但在
用户
中没有匹配项的记录)。谢谢,@Brits。我真傻,我忘了先创建一个用户。