【发布时间】:2021-01-20 17:44:40
【问题描述】:
我在 CraftCMS 项目上安装了 yii2 和 yii2-redis,但是当我启动该项目时,我收到一条错误消息:
数据库异常 – yii\db\Exception 无法打开 redis 数据库连接 (tcp://:, database=): 0 - 无法解析地址“:” 错误信息:无法解析地址“:”
我不太确定如何处理此错误。在我的 .env 文件中,我输入:
REDIS_HOST=localhost
REDIS_PORT=3306
REDIS_PASSWORD=
REDIS_KEY_PREFIX=craft
但这只会产生不同的错误:
数据库异常 – yii\db\Exception 无法打开 redis 数据库连接 (tcp://:3306, database=): 0 - php_network_getaddresses: getaddrinfo 失败:提供节点名或服务名,或未知 错误信息:php_network_getaddresses: getaddrinfo failed: nodename or servname provided, or not known
帮助?
附加上下文:我没有为这个项目设置构建,所以我或多或少继承了这个 Redis 设置。
更新: 我深入研究了 Redis 设置的配置文件,发现 .env 变量和 .env 文件中存在的内容之间存在错误命名。现在我得到了一个完全不同的错误:
“从redis收到非法数据:redis命令为:SELECT 0”
【问题讨论】:
-
您是否尝试过使用 REDIS_HOST=127.0.0.1?从环境变量到参数的转换是框架的一部分还是你正在这样做? github.com/yiisoft/yii2-redis 建议这是您可能正在实施的事情。可以和我们分享一下相关代码吗?
-
嗨艾伦!实点。在阅读了您所写的内容后,我深入研究了 Redis 设置的配置文件,发现 .env 变量与 .env 文件中存在的内容之间存在错误命名。现在我得到一个完全不同的错误:“从 redis 收到非法数据:Redis 命令是:SELECT 0”
-
该命令是否适用于 redis-cli?它还允许您仔细检查端口(3306 通常是 MySQL;6379 是默认的 Redis 端口)。
-
redis.io/commands/select 说“使用 Redis 集群时,不能使用 SELECT 命令”,这可能与您有关。
-
感谢您的耐心和时间,艾伦。原来这是我的一个愚蠢的错误——我不小心删除了 Redis 数据库。创建一个新的可以立即解决问题。