📘
[Go: エラー]ld: warning: '/private/var/folders/44... の対処法
Goでsqliteを使おうとした時にエラーが出た時の対処法を書いておきます。
エラー
このエラーメッセージは、Goのコンパイルまたはリンクプロセス中に何かが失敗したことを示しています。
具体的には、ld(リンカ)がいくつかの未定義のシンボルまたは不正なバイナリ形式を検出しています。この問題は、コンパイラやリンカ、または使用されているライブラリまたは依存関係のいずれかにバグがある場合に発生する可能性があります。
$ go run main.go
# command-line-arguments
ld: warning: '/private/var/folders/44/9yrq6qdx6fg5vsx05773wm5h0000gn/T/go-link-225577677/go.o' has malformed LC_DYSYMTAB, expected 67 undefined symbols to start at index 7329, found 152 undefined symbols starting at index 32
結論
goのバージョンをgo1.18.1
-> go1.21.1
に変更することで解消しました。
エラーが発生したコード
main.go
package main
import (
"fmt"
"github.com/mattn/go-sqlite3"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
// User represents the schema for the "users" table
type User struct {
ID int `gorm:"primaryKey"`
Name string `gorm:"uniqueIndex"`
}
func main() {
// Connect to the SQLite database
db, err := gorm.Open(sqlite.Open("database.db"), &gorm.Config{
DisableForeignKeyConstraintWhenMigrating: true,
})
if err != nil {
panic(err)
}
// Migrate the schema (create tables)
err = db.AutoMigrate(&User{})
if err != nil {
panic(err)
}
fmt.Println("Tables are created successfully!")
}
Discussion