Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

reform-db: gofmt error: exit status 2 #173

Closed
ghost opened this issue Aug 30, 2018 · 10 comments
Closed

reform-db: gofmt error: exit status 2 #173

ghost opened this issue Aug 30, 2018 · 10 comments
Labels

Comments

@ghost
Copy link

ghost commented Aug 30, 2018

Hello! I'm really new to golang, i wish i can provide more info but this is all i have now. Running reform-db -db-driver=postgres -db-source=postgres://user:pass@localhost:port/database init returns reform-db: gofmt error: exit status 2, even if it's simple 2 tables "just for test" database. I'm using:

  1. PostgreSQL 10.5
  2. Ubuntu Server 18.04
  3. Go 1.11
  4. installed reform by go get -u gopkg.in/reform.v1/... so I assume I'm using v1.3.2
    For now i don't know what to do, I'm deadlined so i have to choose between other options like kallax or pg, but I really like the simplicity and ideology of reform, so I hope this will be fixed.
@AlekSi
Copy link
Member

AlekSi commented Aug 30, 2018

Please try

reform-db [flags] init -gofmt=false

@ghost
Copy link
Author

ghost commented Aug 30, 2018

Wow. That was really fast. Thank you very much @AlekSi, that helped me, code is generated now. But what's the problem? Also i have bunch of enumerated types that marked as FIXME, what should i do with them? Basically that's nullable strings, is it right?
P.S your Go ORM report rocks :)
P.P.S Foreign keys isn't an option here, right?

@AlekSi
Copy link
Member

AlekSi commented Aug 30, 2018

But what's the problem?

It is hard to say. Please try when you are not under time pressure:

reform-db -debug [flags] init

Also i have bunch of enumerated types that marked as FIXME, what should i do with them? Basically that's nullable strings, is it right?

*string for NULLable varchar columns, right. You can also define a custom type if you need it, the following should work with Go 1.11:

type MyEnum string

const (
  Foo MyEnum = "foo"
  Bar MyEnum = "bar"
)

type Model struct {
  Enum MyEnum `reform:"enum"`
}

@ghost
Copy link
Author

ghost commented Aug 30, 2018

Please try when you are not under time pressure

Here you go:

reform-db: 2018/08/30 17:46:00.454630 main.go:78: >>> SELECT "information_schema"."tables"."table_catalog", "information_schema"."tables"."table_schema", "information_schema"."tables"."table_name", "information_schema"."tables"."table_type" FROM "information_schema"."tables" WHERE table_schema = current_schema()
reform-db: 2018/08/30 17:46:00.459508 main.go:78: <<< SELECT "information_schema"."tables"."table_catalog", "information_schema"."tables"."table_schema", "information_schema"."tables"."table_name", "information_schema"."tables"."table_type" FROM "information_schema"."tables" WHERE table_schema = current_schema() 4.758423ms
reform-db: 2018/08/30 17:46:00.459654 main.go:78: >>> SELECT column_name, ordinal_position FROM information_schema.key_column_usage
			INNER JOIN information_schema.table_constraints ON key_column_usage.table_catalog = table_constraints.table_catalog AND key_column_usage.table_schema = table_constraints.table_schema AND key_column_usage.table_name = table_constraints.table_name
			WHERE key_column_usage.table_catalog = $1 AND
				key_column_usage.table_schema = $2 AND
				key_column_usage.table_name = $3 AND
				constraint_type = 'PRIMARY KEY'
			ORDER BY ordinal_position DESC [`database`, `public`, `accounts`]
reform-db: 2018/08/30 17:46:00.465896 main.go:78: <<< SELECT column_name, ordinal_position FROM information_schema.key_column_usage
			INNER JOIN information_schema.table_constraints ON key_column_usage.table_catalog = table_constraints.table_catalog AND key_column_usage.table_schema = table_constraints.table_schema AND key_column_usage.table_name = table_constraints.table_name
			WHERE key_column_usage.table_catalog = $1 AND
				key_column_usage.table_schema = $2 AND
				key_column_usage.table_name = $3 AND
				constraint_type = 'PRIMARY KEY'
			ORDER BY ordinal_position DESC [`database`, `public`, `accounts`] 6.163433ms
reform-db: 2018/08/30 17:46:00.466115 main.go:78: >>> SELECT "information_schema"."columns"."table_catalog", "information_schema"."columns"."table_schema", "information_schema"."columns"."table_name", "information_schema"."columns"."column_name", "information_schema"."columns"."is_nullable", "information_schema"."columns"."data_type" FROM "information_schema"."columns" WHERE table_catalog = $1 AND table_schema = $2 AND table_name = $3 ORDER BY ordinal_position [`database`, `public`, `accounts`]
reform-db: 2018/08/30 17:46:00.474430 main.go:78: <<< SELECT "information_schema"."columns"."table_catalog", "information_schema"."columns"."table_schema", "information_schema"."columns"."table_name", "information_schema"."columns"."column_name", "information_schema"."columns"."is_nullable", "information_schema"."columns"."data_type" FROM "information_schema"."columns" WHERE table_catalog = $1 AND table_schema = $2 AND table_name = $3 ORDER BY ordinal_position [`database`, `public`, `accounts`] 8.285622ms
reform-db: 2018/08/30 17:46:00.474604 main.go:78: >>> SELECT column_name, ordinal_position FROM information_schema.key_column_usage
			INNER JOIN information_schema.table_constraints ON key_column_usage.table_catalog = table_constraints.table_catalog AND key_column_usage.table_schema = table_constraints.table_schema AND key_column_usage.table_name = table_constraints.table_name
			WHERE key_column_usage.table_catalog = $1 AND
				key_column_usage.table_schema = $2 AND
				key_column_usage.table_name = $3 AND
				constraint_type = 'PRIMARY KEY'
			ORDER BY ordinal_position DESC [`database`, `public`, `contacts`]
reform-db: 2018/08/30 17:46:00.477969 main.go:78: <<< SELECT column_name, ordinal_position FROM information_schema.key_column_usage
			INNER JOIN information_schema.table_constraints ON key_column_usage.table_catalog = table_constraints.table_catalog AND key_column_usage.table_schema = table_constraints.table_schema AND key_column_usage.table_name = table_constraints.table_name
			WHERE key_column_usage.table_catalog = $1 AND
				key_column_usage.table_schema = $2 AND
				key_column_usage.table_name = $3 AND
				constraint_type = 'PRIMARY KEY'
			ORDER BY ordinal_position DESC [`database`, `public`, `contacts`] 3.234114ms
reform-db: 2018/08/30 17:46:00.478095 main.go:78: >>> SELECT "information_schema"."columns"."table_catalog", "information_schema"."columns"."table_schema", "information_schema"."columns"."table_name", "information_schema"."columns"."column_name", "information_schema"."columns"."is_nullable", "information_schema"."columns"."data_type" FROM "information_schema"."columns" WHERE table_catalog = $1 AND table_schema = $2 AND table_name = $3 ORDER BY ordinal_position [`database`, `public`, `contacts`]
reform-db: 2018/08/30 17:46:00.482769 main.go:78: <<< SELECT "information_schema"."columns"."table_catalog", "information_schema"."columns"."table_schema", "information_schema"."columns"."table_name", "information_schema"."columns"."column_name", "information_schema"."columns"."is_nullable", "information_schema"."columns"."data_type" FROM "information_schema"."columns" WHERE table_catalog = $1 AND table_schema = $2 AND table_name = $3 ORDER BY ordinal_position [`database`, `public`, `contacts`] 4.645009ms
reform-db: 2018/08/30 17:46:00.483990 cmd_init.go:204: main.StructData{Imports:map[string]struct {}{"time":struct {}{}}, StructInfo:parse.StructInfo{Type:"Accounts", SQLSchema:"", SQLName:"accounts", Fields:[]parse.FieldInfo{parse.FieldInfo{Name:"ID", Type:"int32", Column:"id"}, parse.FieldInfo{Name:"CreatedAt", Type:"*time.Time", Column:"created_at"}, parse.FieldInfo{Name:"UpdatedAt", Type:"*time.Time", Column:"updated_at"}, parse.FieldInfo{Name:"DeletedAt", Type:"*time.Time", Column:"deleted_at"}, parse.FieldInfo{Name:"Email", Type:"*string", Column:"email"}, parse.FieldInfo{Name:"Password", Type:"*string", Column:"password"}, parse.FieldInfo{Name:"Token", Type:"*string", Column:"token"}}, PKFieldIndex:0}, FieldComments:[]string{"", "", "", "", "", "", ""}}
reform-db: 2018/08/30 17:46:00.484170 cmd_init.go:211: Writing /root/accounts.go ...
reform-db: 2018/08/30 17:46:00.484989 cmd_init.go:204: main.StructData{Imports:map[string]struct {}{"time":struct {}{}}, StructInfo:parse.StructInfo{Type:"Contacts", SQLSchema:"", SQLName:"contacts", Fields:[]parse.FieldInfo{parse.FieldInfo{Name:"ID", Type:"int32", Column:"id"}, parse.FieldInfo{Name:"CreatedAt", Type:"*time.Time", Column:"created_at"}, parse.FieldInfo{Name:"UpdatedAt", Type:"*time.Time", Column:"updated_at"}, parse.FieldInfo{Name:"DeletedAt", Type:"*time.Time", Column:"deleted_at"}, parse.FieldInfo{Name:"Name", Type:"*string", Column:"name"}, parse.FieldInfo{Name:"Phone", Type:"*string", Column:"phone"}, parse.FieldInfo{Name:"UserID", Type:"*int32", Column:"user_id"}}, PKFieldIndex:0}, FieldComments:[]string{"", "", "", "", "", "", ""}}
reform-db: 2018/08/30 17:46:00.485141 cmd_init.go:211: Writing /root/contacts.go ...
reform-db: 2018/08/30 17:46:00.485695 cmd_init.go:47: gofmt -s -w /root
reform-db: 2018/08/30 17:46:18.324573 cmd_init.go:50: gofmt error: exit status 2
panic: gofmt error: exit status 2

goroutine 1 [running]:
gopkg.in/reform.v1/internal.(*Logger).Fatalf(0xc000020ca0, 0x8c093f, 0xf, 0xc000352d90, 0x1, 0x1)
	/root/go/src/gopkg.in/reform.v1/internal/logger.go:51 +0x107
main.gofmt(0xc00001a054, 0x5)
	/root/go/src/gopkg.in/reform.v1/reform-db/cmd_init.go:50 +0x1fd
main.cmdInit(0xc00000d4c0, 0xc00001a054, 0x5)
	/root/go/src/gopkg.in/reform.v1/reform-db/cmd_init.go:227 +0x85e
main.main()
	/root/go/src/gopkg.in/reform.v1/reform-db/main.go:128 +0x3a4

@AlekSi
Copy link
Member

AlekSi commented Aug 30, 2018

Are you writing code outside of GOPATH? Are you using Go modules?
Please post outputs of go env and env | grep '^GO'.

@ghost
Copy link
Author

ghost commented Aug 30, 2018

I assume my GOPATH is fine as my GOPATH is part of my PATH.

# go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go"
GOPROXY=""
GORACE=""
GOROOT="/root/.go"
GOTMPDIR=""
GOTOOLDIR="/root/.go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build291529854=/tmp/go-build -gno-record-gcc-switches"
# env | grep '^GO'
GOPATH=/root/go

Btw i checked just now and it looks like this panic is not infuencing the results - all my schema was generated in .go files even without -gofmt=false, but that error confused me and I didn't checked that earlier.

@AlekSi
Copy link
Member

AlekSi commented Aug 30, 2018

Yeah, but do you have projects' code in the GOPATH? Where are other files of your project located?

@ghost
Copy link
Author

ghost commented Aug 30, 2018

My project is in ~/go/src/projectname. I thought db-reform is a standalone utility so i launched it in ~, and after you said about GOPATH i tried to launch it in ~/go, but nothing changed

@AlekSi
Copy link
Member

AlekSi commented Aug 30, 2018

Normally, one should run reform-db inside existing project directory, so files are generated inside Go package that can be imported by gofmt.
I will make it more clear in the documentation.

@ghost
Copy link
Author

ghost commented Aug 30, 2018

Even after launching it in the project folder same error occured. Documentation with full examples would make this project beginner-friendly for sure, i still don't figured out how to properly use NewDB :(

@AlekSi AlekSi added this to the v1.4.0 milestone Sep 2, 2018
@AlekSi AlekSi closed this as completed Jun 27, 2020
@AlekSi AlekSi removed the chore label Jun 27, 2020
@AlekSi AlekSi removed this from the v1.4.0 milestone Jun 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant