From d8da3027e25487be0f039ef293598ec4dfc74e3f Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Mon, 8 Jan 2024 10:04:26 +1100 Subject: [PATCH] try sqlite transaction FK removal --- models/setup.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/models/setup.go b/models/setup.go index c16e911..3048fd2 100644 --- a/models/setup.go +++ b/models/setup.go @@ -222,7 +222,25 @@ func CreateTables() { // Remove users RoleId column userRoleIdCheck, _ := CheckColumnExists("users", "RoleId") if userRoleIdCheck { - _, err := db.Exec("ALTER TABLE users DROP COLUMN RoleId;") + //_, err := db.Exec("ALTER TABLE users DROP COLUMN RoleId;") + _, err := db.Exec(` + PRAGMA foreign_keys=off; + BEGIN TRANSACTION; + ALTER TABLE users RENAME TO _users_old; + CREATE TABLE users + ( + UserId INTEGER PRIMARY KEY ASC, + GroupId INTEGER, + UserName VARCHAR, + Password VARCHAR, + LdapUser BOOLEAN DEFAULT 0, + LdapDN VARCHAR DEFAULT '', + FOREIGN KEY (GroupId) REFERENCES groups(GroupId) + ); + INSERT INTO users SELECT * FROM _users_old; + COMMIT; + PRAGMA foreign_keys=on; + `) if err != nil { log.Printf("Error altering users table to drop RoleId column : '%s'\n", err) os.Exit(1)