redis-server – 永夜 https://www.shuijingwanwq.com 没有不值得去解决的问题,也没有不值得去学习的技术! Sat, 30 May 2026 10:07:25 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.0 在 Yii 2.0 的数据库迁移时报错:Exception: Redis error: ERR Client sent AUTH, but no password is set https://www.shuijingwanwq.com/2021/04/06/4837/ https://www.shuijingwanwq.com/2021/04/06/4837/#respond Tue, 06 Apr 2021 02:20:45 +0000 https://www.shuijingwanwq.com/?p=4837 浏览量: 105

1、在 Yii 2.0 的数据库迁移时报错:Exception: Redis error: ERR Client sent AUTH, but no password is set。如图1

在 Yii 2.0 的数据库迁移时报错:Exception: Redis error: ERR Client sent AUTH, but no password is set。

图1


*** applying m191113_084655_sync_redis_wx_auth_data_to_mysql
Exception: Redis error: ERR Client sent AUTH, but no password is set
Redis command was: AUTH Redis (E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2-redis\src\Connection.php:821)
#0 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2-redis\src\Connection.php(789): yii\redis\Connection->parseResponse(Array, '*2\r\n$4\r\nAUTH\r\n$...')
#1 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2-redis\src\Connection.php(772): yii\redis\Connection->sendCommandInternal('*2\r\n$4\r\nAUTH\r\n$...', Array)
#2 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2-redis\src\Connection.php(634): yii\redis\Connection->executeCommand('AUTH', Array)
#3 E:\wwwroot\channel-pub-api\console\migrations\m191113_084655_sync_redis_wx_auth_data_to_mysql.php(27): yii\redis\Connection->open()
#4 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2\db\Migration.php(114): m191113_084655_sync_redis_wx_auth_data_to_mysql->safeUp()
#5 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2\console\controllers\BaseMigrateController.php(725): yii\db\Migration->up()
#6 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2\console\controllers\BaseMigrateController.php(200): yii\console\controllers\BaseMigrateController->migrateUp('m191113_084655_...')
#7 [internal function]: yii\console\controllers\BaseMigrateController->actionUp(0)
#8 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)
#9 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2\base\Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#10 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2\console\Controller.php(164): yii\base\Controller->runAction('', Array)
#11 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2\base\Module.php(528): yii\console\Controller->runAction('', Array)
#12 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2\console\Application.php(180): yii\base\Module->runAction('migrate', Array)
#13 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2\console\Application.php(147): yii\console\Application->runAction('migrate', Array)
#14 E:\wwwroot\channel-pub-api\vendor\yiisoft\yii2\base\Application.php(386): yii\console\Application->handleRequest(Object(yii\console\Request))
#15 E:\wwwroot\channel-pub-api\yii(23): yii\base\Application->run()
#16 {main}
*** failed to apply m191113_084655_sync_redis_wx_auth_data_to_mysql (time: 0.011s)



2、打开终端并连接 redis-cli,测试 AUTH Redis。报错:(error) ERR Client sent AUTH, but no password is set


PS E:\wwwroot\channel-pub-api> redis-cli
127.0.0.1:6379> AUTH Redis
(error) ERR Client sent AUTH, but no password is set
127.0.0.1:6379>


3、编辑 redis.windows.conf 与 redis.windows-service.conf ,添加 requirepass Redis。


################################## SECURITY ###################################

# Require clients to issue AUTH  before processing any other
# commands.  This might be useful in environments in which you do not trust
# others with access to the host running redis-server.
#
# This should stay commented out for backward compatibility and because most
# people do not need auth (e.g. they run their own servers).
# 
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
requirepass Redis


4、在 Windows 10 中,停止与启动 Redis


PS E:\wwwroot\channel-pub-api> redis-server --service-stop
[29528] 30 Mar 14:04:24.076 # Redis service successfully stopped.
PS E:\wwwroot\channel-pub-api> redis-server --service-start
[28132] 30 Mar 14:04:34.748 # Redis service successfully started.


5、打开终端并连接 redis-cli,测试 AUTH Redis。响应 OK。如图2

打开终端并连接 redis-cli,测试 AUTH Redis。响应 OK。

图2


PS E:\wwwroot\channel-pub-api> redis-cli
127.0.0.1:6379> AUTH Redis
OK
127.0.0.1:6379>


6、在 Yii 2.0 的数据库迁移时迁移成功。如图3

在 Yii 2.0 的数据库迁移时迁移成功。

图3


*** applying m191113_084655_sync_redis_wx_auth_data_to_mysql
*** applied m191113_084655_sync_redis_wx_auth_data_to_mysql (time: 0.266s)


]]>
https://www.shuijingwanwq.com/2021/04/06/4837/feed/ 0
在 Yii 2.0 的控制台命令中,连接 Redis 时报错:yii\db\Exception: Redis error: ERR invalid DB index Redis command was: SELECT 29 in /vendor/yiisoft/yii2-redis/src/Connection.php:736 的分析解决 https://www.shuijingwanwq.com/2019/08/23/3451/ https://www.shuijingwanwq.com/2019/08/23/3451/#respond Fri, 23 Aug 2019 02:07:52 +0000 http://www.shuijingwanwq.com/?p=3451 浏览量: 190 1、在 Yii 2.0 的控制台命令中,报错:yii\db\Exception: Redis error: ERR invalid DB index Redis command was: SELECT 29 in /vendor/yiisoft/yii2-redis/src/Connection.php:736,查看 /console/runtime/logs/app.log


2019-08-09 09:44:13 [-][-][-][error][yii\db\Exception] yii\db\Exception: Redis error: ERR invalid DB index
Redis command was: SELECT 29 in /sobey/www/channel-pub-api/vendor/yiisoft/yii2-redis/src/Connection.php:736
Stack trace:
#0 /sobey/www/channel-pub-api/vendor/yiisoft/yii2-redis/src/Connection.php(713): yii\redis\Connection->parseResponse('SELECT 29')
#1 /sobey/www/channel-pub-api/vendor/yiisoft/yii2-redis/src/Connection.php(697): yii\redis\Connection->sendCommandInternal('*2\r\n$6\r\nSELECT\r...', Array)
#2 /sobey/www/channel-pub-api/vendor/yiisoft/yii2-redis/src/Connection.php(559): yii\redis\Connection->executeCommand('SELECT', Array)
#3 /sobey/www/channel-pub-api/vendor/yiisoft/yii2-redis/src/Connection.php(665): yii\redis\Connection->open()
#4 /sobey/www/channel-pub-api/vendor/yiisoft/yii2-redis/src/Connection.php(630): yii\redis\Connection->executeCommand('SET', Array)
#5 /sobey/www/channel-pub-api/vendor/yiisoft/yii2-queue/src/drivers/redis/Queue.php(135): yii\redis\Connection->__call('set', Array)
#6 /sobey/www/channel-pub-api/vendor/yiisoft/yii2-queue/src/drivers/redis/Queue.php(59): yii\queue\redis\Queue->reserve(3)
#7 [internal function]: yii\queue\redis\Queue->yii\queue\redis\{closure}(Object(Closure))
#8 /sobey/www/channel-pub-api/vendor/yiisoft/yii2-queue/src/cli/Queue.php(117): call_user_func(Object(Closure), Object(Closure))
#9 /sobey/www/channel-pub-api/vendor/yiisoft/yii2-queue/src/drivers/redis/Queue.php(68): yii\queue\cli\Queue->runWorker(Object(Closure))
#10 /sobey/www/channel-pub-api/vendor/yiisoft/yii2-queue/src/drivers/redis/Command.php(76): yii\queue\redis\Queue->run(true, 3)
#11 [internal function]: yii\queue\redis\Command->actionListen(3)
#12 /sobey/www/channel-pub-api/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#13 /sobey/www/channel-pub-api/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#14 /sobey/www/channel-pub-api/vendor/yiisoft/yii2/console/Controller.php(148): yii\base\Controller->runAction('listen', Array)
#15 /sobey/www/channel-pub-api/vendor/yiisoft/yii2/base/Module.php(528): yii\console\Controller->runAction('listen', Array)
#16 /sobey/www/channel-pub-api/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('upload-asset-qu...', Array)
#17 /sobey/www/channel-pub-api/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('upload-asset-qu...', Array)
#18 /sobey/www/channel-pub-api/vendor/yiisoft/yii2/base/Application.php(386): yii\console\Application->handleRequest(Object(yii\console\Request))
#19 /sobey/www/channel-pub-api/yii(23): yii\base\Application->run()
#20 {main}


2、分析发现,是在执行命令:SELECT 29 时,切换到相应数据库:29 时报错的,一个 redis 实例默认有 16 个数据库,从 0 – 15,超出这个范围就会报 ERR invalid DB index,如图1
分析发现,是在执行命令:SELECT 29 时,切换到相应数据库:29 时报错的,一个 redis 实例默认有 16 个数据库,从 0 - 15,超出这个范围就会报 ERR invalid DB index

图1



#0 /sobey/www/channel-pub-api/vendor/yiisoft/yii2-redis/src/Connection.php(713): yii\redis\Connection->parseResponse('SELECT 29')


3、编辑 redis.windows.conf 与 redis.windows-service.conf 文件,查找:databases 16,修改为:databases 32
<pre class="wp-block-syntaxhighlighter-code">

# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1
databases 32

</pre>
4、在 Windows 10 中,停止与启动 Redis


PS C:\> redis-server --service-stop
[87292] 09 Aug 10:44:18.772 # Redis service successfully stopped.
PS C:\> redis-server --service-start
[77236] 09 Aug 10:44:31.673 # Redis service successfully started.


5、打开 RedisDesktopManager,数量变化为 20,但是已经可以执行 SELECT 0 – 31 的命令,如图2
打开 RedisDesktopManager,数量变化为 20,但是已经可以执行 SELECT 0 - 31 的命令

图2

6、删除连接,新连接设置 – 高级设置 – 数据库发现限制,其值默认为 20 ,编辑为 32,如图3
删除连接,新连接设置 - 高级设置 - 数据库发现限制,其值默认为 20 ,编辑为 32

图3

7、打开 RedisDesktopManager,数量变化为 32,符合预期,如图4
打开 RedisDesktopManager,数量变化为 32,符合预期

图4

]]>
https://www.shuijingwanwq.com/2019/08/23/3451/feed/ 0