使用Gin、Gorm、SQLite实现Go CRUD时POST请求报错:no such table: tasks
解决方案
捕获AutoMigrate的错误信息:当前代码未检查
db.AutoMigrate的执行结果,无法定位迁移失败原因。修改init函数中的迁移代码:err = db.AutoMigrate(&Task{}) if err != nil { panic("Failed to migrate database: " + err.Error()) }运行后会输出具体错误,比如权限不足、SQLite版本兼容问题等。
指定数据库文件绝对路径:相对路径
test.db会在程序的当前工作目录创建文件,可能与预期目录不符。改为绝对路径确保指向正确位置:db, err = gorm.Open(sqlite.Open("D:/DOWNLOAD/Golang_Projects/todo_list/test.db"), &gorm.Config{})手动创建表验证连接:若自动迁移仍失败,直接执行SQL创建表,排除Gorm自动迁移的问题:
_, err = db.Exec(`CREATE TABLE IF NOT EXISTS tasks ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, completed BOOLEAN DEFAULT false, created_at DATETIME, updated_at DATETIME, deleted_at DATETIME )`) if err != nil { panic("Failed to create table: " + err.Error()) }将这段代码替换
db.AutoMigrate的位置,测试能否正常创建表。清理旧数据库文件:若
test.db文件已损坏,删除该文件后重新运行程序,让Gorm生成干净的数据库文件。
内容的提问来源于stack exchange,提问作者do hai
相关产品推荐
相关产品推荐

