Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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 违反外键约束_Postgresql_Go - Fatal编程技术网

Postgresql 违反外键约束

Postgresql 违反外键约束,postgresql,go,Postgresql,Go,我一直收到这个错误: 表“note”上的插入或更新违反外键约束“note\u username\u fkey” 我有两个表:User和Note。以下是create table语句: func setup() *sql.DB { db = connectDatabase() //Create queries userTable := `CREATE TABLE IF NOT EXISTS "User"( UserID SERIAL unique, UserNam

我一直收到这个错误: 表“note”上的插入或更新违反外键约束“note\u username\u fkey”

我有两个表:User和Note。以下是create table语句:

func setup() *sql.DB {
db = connectDatabase()
//Create queries
userTable := `CREATE TABLE IF NOT EXISTS "User"(
    UserID SERIAL unique,
    UserName VARCHAR(50) PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Password VARCHAR(40)
    );`

noteTable := `CREATE TABLE IF NOT EXISTS Note(
    NoteID SERIAL PRIMARY KEY,
    UserID INT,
    UserName VARCHAR(50),
    Title VARCHAR(30),
    Contents VARCHAR(1000),
    DateCreated DATE,
    DateUpdated DATE,
    FOREIGN KEY (UserName) REFERENCES "User"(UserName)
    );`
}

}

谁能告诉我哪里错了


谢谢。

检查您尝试在备注表中插入的“用户名”列值是否已在“用户”表中可用。因为insert查询正在尝试插入在“User”表中不可用的值。

您需要先为外键约束创建User,或者在note表列的username中发送null。您阅读了哪些内容了吗?
    func createNoteInsertSQL(userID string, userName string, title string, content string, selectSetting string) bool {
var newNote Note
var err error

newNote.UserID, err = strconv.Atoi(userID)
if err != nil {
    log.Fatal(err)
}
newNote.UserName = userName
newNote.Title = title
newNote.Contents = content
date := time.Now()
newNote.DateCreated = date
newNote.DateUpdated = date

query := `INSERT INTO Note (UserID, UserName, Title, Contents, DateCreated, DateUpdated) VALUES ($1, $2, $3, $4, $5, $6) RETURNING NoteID;`
stmt, err := db.Prepare(query)
if err != nil {
    log.Fatal(err)
    return false
}

var noteID int
err = stmt.QueryRow(newNote.UserID, newNote.UserName, newNote.Title, newNote.Contents, newNote.DateCreated, newNote.DateUpdated).Scan(&noteID)
if err != nil {
    log.Fatal(err)
    return false
}