亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

戈朗 | SQLite 無法創建數據庫 -> 語法錯誤

戈朗 | SQLite 無法創建數據庫 -> 語法錯誤

Go
呼如林 2022-12-13 10:38:10
我正在嘗試使用 Golang 創建一個 SQLite 數據庫,用于程序的本地安裝。但我現在的問題是,由于某種原因它似乎起作用了,但我不知道為什么。它總是說,當我想用 SQL 查詢 (CREATE DATABASE [name]) 創建數據庫時,它說語法無效。因為這個查詢似乎存在于 SQLite 中,所以我只嘗試創建表,但后來我得到一個錯誤,說我使用了一個未知的數據庫。我現在嘗試了很多東西,但似乎沒有任何效果。首先,我認為可能是因為在創建/打開數據庫連接之前執行了查詢而發生了錯誤。但現在 100% 不是這種情況,因為我嘗試在執行 sql 查詢之前睡覺,什么都沒有改變。運行此代碼時出現的錯誤:panic: near "DATABASE": syntax errorgoroutine 1 [running]:git.lambya.com/lucwol/coreflare/database.checkError(...)        /home/lambya/Dev/piflare/coreflare/database/db.go:37git.lambya.com/lucwol/coreflare/database.deploy()        /home/lambya/Dev/piflare/coreflare/database/db.go:28 +0xdcgit.lambya.com/lucwol/coreflare/database.Connect({0x832adf, 0x9})        /home/lambya/Dev/piflare/coreflare/database/db.go:23 +0xbbmain.main()        /home/lambya/Dev/piflare/coreflare/main.go:102 +0x29exit status 2感謝您的支持 :)繼承人的代碼。package databaseimport (    "database/sql"    "os"    "time"    _ "github.com/mattn/go-sqlite3")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() {    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)    }}
查看完整描述

1 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

希望這可以幫助

  1. 創建文件本身時使用 os.create(path) 創建的數據庫名稱

  2. AUTOINCREMENT 鍵是一個詞

  3. 如果你想讓 user.id 成為主鍵,它應該是整數

package main


import (

    "database/sql"

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

    "os"

    "time"

)


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() {

    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")

}


查看完整回答
反對 回復 2022-12-13
  • 1 回答
  • 0 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號