You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:19:54