这几天在搭建一个数据中心的项目,需要把线上的历史数据重组后,导入到 mongodb 里面,中间需要有个过渡存储。考虑到知识临时存储,性能要求也比较高,就采用了 redis 存储的方案。

在配置 database.redis 的时候,一直报这个错,虽然很快就解决了,但这个坑还是记录一下。

错误提示:

`SELECT` failed: ERR invalid DB index

错误原因:

laravel5 框架的 redis 配置项(config/database.php),有这句:

'database' => env('REDIS_DEFAULT_DATABASE', 0),

如果.env 里面 REDIS_DEFAULT_DATABASE=0,结果就转成空字符串 ”,redis 的 command就变成 SELECT,而非想要的 SELECT 0

解决方法

(1)REDIS_DEFAULT_DATABASE= 1-15 的随意有效值

(2)REDIS_DEFAULT_DATABASE=‘0’,明确是 string 0

(3).env里不写 REDIS_DEFAULT_DATABASE, 会使用默认值 int 0

另外还有一点需要注意,设置的 REDIS_DEFAULT_DATABASE 如果不存在,比如说大于 15,也会报错。如果确实需要特别大的值,可以在 redis 配置中设置。

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/blog/post/31