Skip to content

2. 修复 SQL 报错

上文的这个错误是因为 SQLite 驱动需要 CGO 支持。让我们改用 MySQL 数据库来避免这个问题。

1. 修改数据库配置文件

首先需要修改数据库配置文件:

go
// :d:\works\RD\todo-list\config\database.go
package config

import (
	"todo-list/models"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

func InitDB() (*gorm.DB, error) {
	dsn := "root:123456@tcp(127.0.0.1:3306)/todo_list?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		return nil, err
	}

	// 自动迁移数据库结构
	err = db.AutoMigrate(&models.Todo{})
	if err != nil {
		return nil, err
	}

	return db, nil
}

2. 更新依赖

然后需要更新依赖:

bash
cd d:\works\RD\todo-list
go get -u gorm.io/driver/mysql

使用前请确保:

  1. 已安装 MySQL 数据库
  2. MySQL 服务已启动
  3. 创建了名为 todo_list 的数据库:
sql
CREATE DATABASE todo_list CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

报错(详情见下文)

An image

如果你的 MySQL 配置不同(比如用户名、密码、端口等),请相应修改 DSN 字符串。