戈朗 | SQLite 无法创建数据库 -> 语法错误

我正在尝试使用 Golang 创建一个 SQLite 数据库,用于程序的本地安装。但我现在的问题是,由于某种原因它似乎起作用了,但我不知道为什么。它总是说,当我想用 SQL 查询 (CREATE DATABASE [name]) 创建数据库时,它说语法无效。因为这个查询似乎存在于 SQLite 中,所以我只尝试创建表,但后来我得到一个错误,说我使用了一个未知的数据库。我现在尝试了很多东西,但似乎没有任何效果。首先,我认为可能是因为在创建/打开数据库连接之前执行了查询而发生了错误。但现在 100% 不是这种情况,因为我尝试在执行 sql 查询之前睡觉,什么都没有改变。运行此代码时出现的错误:


panic: near "DATABASE": syntax error


goroutine 1 [running]:

git.lambya.com/lucwol/coreflare/database.checkError(...)

        /home/lambya/Dev/piflare/coreflare/database/db.go:37

git.lambya.com/lucwol/coreflare/database.deploy()

        /home/lambya/Dev/piflare/coreflare/database/db.go:28 +0xdc

git.lambya.com/lucwol/coreflare/database.Connect({0x832adf, 0x9})

        /home/lambya/Dev/piflare/coreflare/database/db.go:23 +0xbb

main.main()

        /home/lambya/Dev/piflare/coreflare/main.go:102 +0x29

exit status 2

感谢您的支持 :)


继承人的代码。


package database


import (

    "database/sql"

    "os"

    "time"


    _ "github.com/mattn/go-sqlite3"

)


var DB *sql.DB


func Connect(path string) {

    if _, err := os.Stat(path); err != nil {

        file, err := os.Create(path)

        checkError(err)

        file.Close()

    }

    db, err := sql.Open("sqlite3", path)

    checkError(err)

    time.Sleep(time.Millisecond * 2000)

    DB = db

    deploy()

}


func deploy() {

    query, err := DB.Prepare("CREATE DATABASE test")

    checkError(err)

    query.Exec()

    query2, err := DB.Prepare("CREATE TABLE test.user(id int NOT NULL AUTO_INCREMENT, name varchar(50), PRIMARY_KEY(id))")

    checkError(err)

    query2.Exec()

}


func checkError(err error) {

    if err != nil {

        panic(err)

    }

}


呼如林
浏览 238回答 1
1回答

四季花海

希望这可以帮助创建文件本身时使用 os.create(path) 创建的数据库名称AUTOINCREMENT 键是一个词如果你想让 user.id 成为主键,它应该是整数package mainimport (    "database/sql"    _ "github.com/mattn/go-sqlite3" // Import go-sqlite3 library    "os"    "time")var DB *sql.DBfunc Connect(path string) {    if _, err := os.Stat(path); err != nil {        file, err := os.Create(path)        checkError(err)        file.Close()    }    db, err := sql.Open("sqlite3", path)    checkError(err)    time.Sleep(time.Millisecond * 2000)    DB = db    deploy()}func deploy() {    query2, err := DB.Prepare("CREATE TABLE user(id integer NOT NULL PRIMARY KEY AUTOINCREMENT, name varchar(50) )")    checkError(err)    query2.Exec()}func checkError(err error) {    if err != nil {        panic(err)    }}func main() {    Connect("./sample.db")}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go