diff --git a/cli/connector/connector.go b/cli/connector/connector.go index 6050ea612..6d33b6e22 100644 --- a/cli/connector/connector.go +++ b/cli/connector/connector.go @@ -3,6 +3,8 @@ package connector import ( "fmt" "net" + "os" + "path/filepath" "time" "github.com/tarantool/go-tarantool" @@ -37,6 +39,17 @@ type Connector interface { // Connect connects to the tarantool instance according to options. func Connect(opts ConnectOpts) (Connector, error) { + // It became common that address is longer than 140 symbols(limit). + // To support all paths we use relative path with chdir into a directory of socket. + workDir, err := os.Getwd() + if err != nil { + return nil, err + } + if _, err := os.Stat(opts.Address); err == nil { + os.Chdir(filepath.Dir(opts.Address)) + opts.Address = "./" + filepath.Base(opts.Address) + defer os.Chdir(workDir) + } // Connect to specified address. greetingConn, err := net.Dial(opts.Network, opts.Address) if err != nil { @@ -65,8 +78,8 @@ func Connect(opts ConnectOpts) (Connector, error) { addr := fmt.Sprintf("%s://%s", opts.Network, opts.Address) conn, err := tarantool.Connect(addr, tarantool.Opts{ - User: opts.Username, - Pass: opts.Password, + User: opts.Username, + Pass: opts.Password, SkipSchema: true, // We don't need a schema for eval requests. }) if err != nil {