戈朗 | SQLite 无法创建数据库 -> 语法错误
Golang | SQLite cant create Database -> Syntax Error
我正在尝试使用 Golang 创建一个 SQLite 数据库,用于程序的本地安装。但我现在的问题是,由于某种原因它似乎起作用了,但我不知道为什么。它总是说,当我想用 SQL 查询(CREATE DATABASE [name])创建数据库时,它说语法无效。由于此查询似乎存在于 SQLite,因此我尝试仅创建 Table,但随后出现错误,提示我使用了未知数据库。我现在尝试了很多东西,但似乎没有任何效果。首先,我认为可能是因为查询是在数据库连接 created/open 之前执行的,所以发生了错误。但现在 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)
}
}
希望对您有所帮助
创建文件时用os.create(路径)创建的数据库名称
AUTOINCREMENT 键是一个词
如果你想创建 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")
}
我正在尝试使用 Golang 创建一个 SQLite 数据库,用于程序的本地安装。但我现在的问题是,由于某种原因它似乎起作用了,但我不知道为什么。它总是说,当我想用 SQL 查询(CREATE DATABASE [name])创建数据库时,它说语法无效。由于此查询似乎存在于 SQLite,因此我尝试仅创建 Table,但随后出现错误,提示我使用了未知数据库。我现在尝试了很多东西,但似乎没有任何效果。首先,我认为可能是因为查询是在数据库连接 created/open 之前执行的,所以发生了错误。但现在 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)
}
}
希望对您有所帮助
创建文件时用os.create(路径)创建的数据库名称
AUTOINCREMENT 键是一个词
如果你想创建 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") }