redigo: `NOSCRIPT No matching script. Please use EVAL.`

while doing a script.Do(...) I recieve the following error: NOSCRIPT No matching script. Please use EVAL.

But when i look at the code, it’s not supposed to happend

func (s *Script) Do(c Conn, keysAndArgs ...interface{}) (interface{}, error) {
	v, err := c.Do("EVALSHA", s.args(s.hash, keysAndArgs)...)
	if e, ok := err.(Error); ok && strings.HasPrefix(string(e), "NOSCRIPT ") {
		v, err = c.Do("EVAL", s.args(s.src, keysAndArgs)...)
	}
	return v, err
}

Any idea how to fix it?

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Comments: 17 (5 by maintainers)

Most upvoted comments

I think that’s the point. one package is using "github.com/gomodule/redigo/redis" and another one "github.com/garyburd/redigo/redis". I’ll make the Println asap

Add the following log line and report the results. Perhaps you have two redis packages.

   fmt.Println(reflect.TypeOf(err).PkgPath(), reflect.TypeOf(Error(""))