英文:
Execute the sqlite3 connector with golang in vscode. Met below error: collect2: error: ld returned 1 exit status
问题
package main
import (
"database/sql"
"fmt"
"log"
"os"
_ "github.com/mattn/go-sqlite3"
)
type Users struct {
UserId int
Uname string
}
func main() {
os.Remove("foo.db")
db, err := sql.Open("sqlite3", "foo.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
sql := `create table users (userId integer, uname text);`
db.Exec(sql)
sql = `insert into users(userId,uname) values(1,'Mike');`
db.Exec(sql)
sql = `insert into users(userId,uname) values(2,'John');`
db.Exec(sql)
rows, err := db.Query("select * from users")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
var users []Users = make([]Users, 0)
for rows.Next() {
var u Users
rows.Scan(&u.UserId, &u.Uname)
users = append(users, u)
}
fmt.Println(users)
}
以上是你的代码。现在我将运行这个文件。代码只是连接到sqlite3数据库,并执行一些SQL语句,没有其他操作。我不知道为什么会出现这个错误。
遇到以下错误:
csccl25013> go run .
github.com/goproject/sqlite3
/nfs/site/disks/simcloud_zhoudo1x_002/go/go/pkg/tool/linux_amd64/link: 运行gcc失败: 退出状态 1
/nfs/site/itools/em64t_SLES12SP5/pkgs/gcc/4.7.2/.bin/../lib64/gcc/x86_64-suse-linux/4.7.2/../../../../x86_64-suse-linux/bin/ld: /tmp/go-link-322571714/000015.o(.text+0x63): 无法解析的 AWAVAUATUSH��h�*H�T$(���� 与符号 `stderr@@GLIBC_2.2.5'
/nfs/site/itools/em64t_SLES12SP5/pkgs/gcc/4.7.2/.bin/../lib64/gcc/x86_64-suse-linux/4.7.2/../../../../x86_64-suse-linux/bin/ld: 最终链接失败: 输出上的不可表示的部分
collect2: 错误: ld 返回 1 退出状态
我不知道如何解决这个错误。请帮助我。
期望的结果:
执行成功。
正常连接到sqlite3。
英文:
package main
import (
"database/sql"
"fmt"
"log"
"os"
_ "github.com/mattn/go-sqlite3"
)
type Users struct {
UserId, intUname string
}
func main() {
os.Remove("foo.db")
db, err := sql.Open("sqlite3", "foo.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
sql := `create table users (userId integer, uname text);`
db.Exec(sql)
sql = `insert into users(userId,uname) values(1,'Mike');`
db.Exec(sql)
sql = `insert into users(userId,uname) values(2,'John');`
db.Exec(sql)
rows, err := db.Query("select * from users")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
var users []Users = make([]Users, 0)
for rows.Next() {
var u Users
rows.Scan(&u.UserId, &u.intUname)
users = append(users, u)
}
fmt.Println(users)
}
Above is my codes. Now I will run this file. Codes only connect to sqlite3 database, And execute some sql, No any else operate. I don't know why to happen this.
Met below error:
csccl25013> go run .
github.com/goproject/sqlite3
/nfs/site/disks/simcloud_zhoudo1x_002/go/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/nfs/site/itools/em64t_SLES12SP5/pkgs/gcc/4.7.2/.bin/../lib64/gcc/x86_64-suse-linux/4.7.2/../../../../x86_64-suse-linux/bin/ld: /tmp/go-link-322571714/000015.o(.text+0x63): unresolvable AWAVAUATUSH��h�*H�T$(���� relocation against symbol `stderr@@GLIBC_2.2.5'
/nfs/site/itools/em64t_SLES12SP5/pkgs/gcc/4.7.2/.bin/../lib64/gcc/x86_64-suse-linux/4.7.2/../../../../x86_64-suse-linux/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
I don't know how to resolve this error. Please help me.
Expected Result:
Execute successful.
Connect sqlite3 normally.
答案1
得分: 1
错误提示表明您的Go工具链无法构建github.com/mattn/go-sqlite3
的CGO实现(例如,交叉编译错误)。
如果您无法解决C编译器的问题,可以尝试导入modernc.org/sqlite
并使用"sqlite"
SQL驱动程序。这是一个纯Go版本的Sqlite,避免了对C编译器的需求。
英文:
The error indicates your Go toolchain is unable to build the CGO implementation for github.com/mattn/go-sqlite3
(eg, cross-compilation error).
If you are unable to troubleshoot your C compiler you could try importing modernc.org/sqlite
and using the "sqlite"
SQL driver instead. This is a pure Go conversion of Sqlite and avoids the need for the C compiler.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论