<div id="content_views" class="markdown_views"> <!-- flowchart 箭头图标 勿删 --> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p><a href="https://blog.csdn.net/hanchao5272/article/details/79792465" rel="nofollow" target="_blank">相关链接:经过Canal保证某网站的Redis与MySql的数据自动同步</a></p>css
<hr>python
<h2 id="1错误信息"><a name="t0"></a>1.错误信息</h2>web
<pre class="prettyprint" name="code"><code class="language-console hljs livecodeserver has-numbering" onclick="mdcp.signin(event)">redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against <span class="hljs-operator">a</span> key holding <span class="hljs-operator">the</span> wrong kind <span class="hljs-operator">of</span> <span class="hljs-built_in">value</span> <div class="hljs-button signin" data-title="登陆后复制"></div></code></pre>redis
<h2 id="2分析"><a name="t1"></a>2.分析</h2>markdown
<p>当前程序中key的操做类型,并不与redis库中存在的key的类型相匹配。举例 <br> 第一次保存key,将其设置为key-value形式</p>svg
<pre class="prettyprint" name="code"><code class="language-console hljs cs has-numbering" onclick="mdcp.signin(event)">[root@server3 src]<span class="hljs-preprocessor"># ./redis-cli -h 192.168.6.123 -p 6379 -a "{password}"</span> <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>> <span class="hljs-keyword">set</span> my_test_userid_001 <span class="hljs-string">"0001"</span> OK <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>> <span class="hljs-keyword">get</span> my_test_userid_001 <span class="hljs-string">"0001"</span><div class="hljs-button signin" data-title="登陆后复制"></div></code></pre>网站
<p>第二次保存key,将其以key-map形式进行保存,则会报错</p>ui
<pre class="prettyprint" name="code"><code class="language-redis hljs livecodeserver has-numbering" onclick="mdcp.signin(event)"><span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>> hmset my_test_userid_001 user001 <span class="hljs-string">"0001"</span> user002 <span class="hljs-string">"0002"</span> (error) WRONGTYPE Operation against <span class="hljs-operator">a</span> key holding <span class="hljs-operator">the</span> wrong kind <span class="hljs-operator">of</span> <span class="hljs-built_in">value</span><div class="hljs-button signin" data-title="登陆后复制"></div></code></pre>spa
<p>若是删除以前的key,则当前的操做能够进行:</p>.net
<pre class="prettyprint" name="code"><code class="language-console hljs python has-numbering" onclick="mdcp.signin(event)"><span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>> <span class="hljs-keyword">del</span> my_test_userid_001 (integer) <span class="hljs-number">1</span> <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>> hmset my_test_userid_001 user001 <span class="hljs-string">"0001"</span> user002 <span class="hljs-string">"0002"</span> OK <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>> hgetall my_test_userid_001 <span class="hljs-number">1</span>) <span class="hljs-string">"user001"</span> <span class="hljs-number">2</span>) <span class="hljs-string">"0001"</span> <span class="hljs-number">3</span>) <span class="hljs-string">"user002"</span> <span class="hljs-number">4</span>) <span class="hljs-string">"0002"</span> <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>> hmget my_test_userid_001 user001 <span class="hljs-number">1</span>) <span class="hljs-string">"0001"</span> <span class="hljs-number">192.168</span><span class="hljs-number">.6</span><span class="hljs-number">.123</span>:<span class="hljs-number">6379</span>> <span class="hljs-keyword">del</span> my_test_userid_001 (integer) <span class="hljs-number">1</span><div class="hljs-button signin" data-title="登陆后复制"></div></code></pre>
<h2 id="3问题解决"><a name="t2"></a>3.问题解决</h2>
<h3 id="31临时解决"><a name="t3"></a>3.1.临时解决</h3>
<p>删除冲突key,相似于:</p>
<pre class="prettyprint" name="code"><code class="hljs css has-numbering" onclick="mdcp.signin(event)">192<span class="hljs-class">.168</span><span class="hljs-class">.6</span><span class="hljs-class">.123</span><span class="hljs-pseudo">:6379</span>> <span class="hljs-tag">del</span> <span class="hljs-tag">my_test_userid_001</span><div class="hljs-button signin" data-title="登陆后复制"></div></code></pre>
<h3 id="32根本解决"><a name="t4"></a>3.2.根本解决</h3>
<p>形成这个问题,确定是程序在多处使用了同一个<code>key</code>,而且是以不一样的类型,有的以key-value类型,有的以key-map,有的以key-object。 <br> 查看程序,找到这个冲突,并修改。</p> 原文地址:https://blog.csdn.net/hanchao5272/article/details/79051364 </div>