我正在尝试学习如何在 MySQL 5.6 中使用 memcached 插件。我使用 telnet 来获取和设置 memcached 的值。当我尝试从 memcache 获取过期值时,它显示“连接已被外部主机关闭。”。更多详情如下:
数据库名称:测试
表名:demo
我的表描述
+-------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| c1 | varchar(32) | NO | PRI | NULL | |
| c21 | varchar(1024) | YES | | NULL | |
| c22 | varchar(1024) | YES | | NULL | |
| c3 | int(11) | YES | | NULL | |
| c4 | bigint(20) unsigned | YES | | NULL | |
| c5 | int(11) | YES | | NULL | |
+-------+---------------------+------+-----+---------+-------+
我的表格内容
+----+------+------+------+------+------------+
| c1 | c21 | c22 | c3 | c4 | c5 |
+----+------+------+------+------+------------+
| a | aaaa | aaaa | 0 | 1 | 0 |
| b | aa | aa | 0 | 2 | 1390372227 |
+----+------+------+------+------+------------+
容器表
+------+-----------+-----------+-------------+---------------+-------+------------+--------------------+------------------------+
| name | db_schema | db_table | key_columns | value_columns | flags | cas_column | expire_time_column | unique_idx_name_on_key |
+------+-----------+-----------+-------------+---------------+-------+------------+--------------------+------------------------+
| aaa | test | demo_test | c1 | c2 | c3 | c4 | c5 | PRIMARY |
| bb | test | demo | c1 | c21,c22 | c3 | c4 | c5 | PRIMARY |
+------+-----------+-----------+-------------+---------------+-------+------------+--------------------+------------------------+
缓存策略表
+--------------+-------------+-------------+---------------+--------------+
| policy_name | get_policy | set_policy | delete_policy | flush_policy |
+--------------+-------------+-------------+---------------+--------------+
| cache_policy | innodb_only | innodb_only | innodb_only | innodb_only |
+--------------+-------------+-------------+---------------+--------------+
远程登录
~ ⮀ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
get @@bb
VALUE @@bb 0 9
test/demo
END
get a
VALUE a 0 9
aaaa|aaaa
END
get c
END
get d
END
get b
Connection closed by foreign host.
当我尝试获取 memcached 中不存在的值时,或者当我尝试获取未过期的值时,没有问题。此外,这只发生在具有多个值列的表(此处为 c21 和 c22 )的情况下。如果我对只有一个值列的表执行相同操作,则没有问题。
并且在连接关闭后,如果我尝试查询数据库,则会显示以下错误:
mysql> select * from innodb_memcache.cache_policies;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 1
Current database: test
而且有时会显示如下错误:
*** glibc detected *** /opt/mysql/server-5.6/bin/mysqld: free(): invalid pointer: 0x00007f053c008827 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7eb96)[0x7f0596f39b96]
/opt/mysql/server-5.6/lib/plugin//innodb_engine.so(+0xb170)[0x7f0547df3170]
/opt/mysql/server-5.6/lib/plugin/libmemcached.so(+0x10bbb)[0x7f0569475bbb]
/opt/mysql/server-5.6/lib/plugin/libmemcached.so(+0x157b0)[0x7f056947a7b0]
/opt/mysql/server-5.6/lib/plugin/libmemcached.so(+0x16cec)[0x7f056947bcec]
/opt/mysql/server-5.6/lib/plugin/libmemcached.so(conn_parse_cmd+0x11)[0x7f056947c931]
/opt/mysql/server-5.6/lib/plugin/libmemcached.so(+0x9bdc)[0x7f056946ebdc]
/opt/mysql/server-5.6/lib/plugin/libmemcached.so(event_base_loop+0x286)[0x7f05694810d6]
/opt/mysql/server-5.6/lib/plugin/libmemcached.so(+0x19bb2)[0x7f056947ebb2]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a)[0x7f05982dbe9a]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7f0596faf3fd]
======= Memory map: ========
00400000-00f6f000 r-xp 00000000 08:03 21495897 /opt/mysql/server-5.6/bin/mysqld
0116f000-0131a000 rw-p 00b6f000 08:03 21495897 /opt/mysql/server-5.6/bin/mysqld
0131a000-0136d000 rw-p 00000000 00:00 0
01a44000-021a0000 rw-p 00000000 00:00 0 [heap]
7f0534000000-7f0534021000 rw-p 00000000 00:00 0
7f0534021000-7f0538000000 ---p 00000000 00:00 0
7f053c000000-7f053c021000 rw-p 00000000 00:00 0
7f053c021000-7f0540000000 ---p 00000000 00:00 0
7f0540000000-7f05402dd000 rw-p 00000000 00:00 0
7f05402dd000-7f0544000000 ---p 00000000 00:00 0
7f05445e1000-7f05445e2000 ---p 00000000 00:00 0
7f05445e2000-7f0544de2000 rw-p 00000000 00:00 0 [stack:30166]
7f0544de2000-7f0544de3000 ---p 00000000 00:00 0
7f0544de3000-7f05455e3000 rw-p 00000000 00:00 0 [stack:30160]
7f05455e3000-7f05455e4000 ---p 00000000 00:00 0
7f05455e4000-7f0545de4000 rw-p 00000000 00:00 0 [stack:30161]
7f0545de4000-7f0545de5000 ---p 00000000 00:00 0
7f0545de5000-7f05465e5000 rw-p 00000000 00:00 0 [stack:30162]
7f05465e5000-7f05465e6000 ---p 00000000 00:00 0
7f05465e6000-7f0546de6000 rw-p 00000000 00:00 0 [stack:30163]
7f0546de6000-7f0546de7000 ---p 00000000 00:00 0
7f0546de7000-7f05475e7000 rw-p 00000000 00:00 0 [stack:30165]
7f05475e7000-7f05475e8000 ---p 00000000 00:00 0
7f05475e8000-7f0547de8000 rw-p 00000000 00:00 0 [stack:30164]
7f0547de8000-7f0547e00000 r-xp 00000000 08:03 21505464 /opt/mysql/server-5.6/lib/plugin/innodb_engine.so
7f0547e00000-7f0547fff000 ---p 00018000 08:03 21505464 /opt/mysql/server-5.6/lib/plugin/innodb_engine.so
7f0547fff000-7f0548000000 rw-p 00017000 08:03 21505464 /opt/mysql/server-5.6/lib/plugin/innodb_engine.so
7f0548000000-7f0548022000 rw-p 00000000 00:00 0
7f0548022000-7f054c000000 ---p 00000000 00:00 0
7f054c000000-7f054c021000 rw-p 00000000 00:00 0
7f054c021000-7f0550000000 ---p 00000000 00:00 0
7f0550000000-7f0550021000 rw-p 00000000 00:00 0
7f0550021000-7f0554000000 ---p 00000000 00:00 0
7f0554000000-7f0554021000 rw-p 00000000 00:00 0
7f0554021000-7f0558000000 ---p 00000000 00:00 0
7f0558000000-7f0558021000 rw-p 00000000 00:00 0
7f0558021000-7f055c000000 ---p 00000000 00:00 0
7f055c000000-7f055c07a000 rw-p 00000000 00:00 0
7f055c07a000-7f0560000000 ---p 00000000 00:00 0
7f0560000000-7f0560021000 rw-p 00000000 00:00 0
7f0560021000-7f0564000000 ---p 00000000 00:00 0
7f0564041000-7f0564042000 ---p 00000000 00:00 0
7f0564042000-7f0564842000 rw-p 00000000 00:00 0
7f0564842000-7f0564843000 ---p 00000000 00:00 0
7f0564843000-7f0565043000 rw-p 00000000 00:00 0 [stack:19202]
7f0565043000-7f0565044000 ---p 00000000 00:00 0
7f0565044000-7f0565844000 rw-p 00000000 00:00 0 [stack:19201]
7f0565844000-7f0565845000 ---p 00000000 00:00 0
7f0565845000-7f0566045000 rw-p 00000000 00:00 0 [stack:19200]
7f0566045000-7f0566046000 ---p 00000000 00:00 0
7f0566046000-7f0566846000 rw-p 00000000 00:00 0 [stack:19199]
7f0566846000-7f0566847000 ---p 00000000 00:00 0
7f0566847000-7f0567047000 rw-p 00000000 00:00 0 [stack:19198]
7f0567047000-7f0567048000 ---p 00000000 00:00 0
7f0567048000-7f0567848000 rw-p 00000000 00:00 0 [stack:19197]
7f0567848000-7f0567849000 ---p 00000000 00:00 0
7f0567849000-7f0568049000 rw-p 00000000 00:00 0 [stack:19196]
7f0568049000-7f056804a000 ---p 00000000 00:00 0
7f056804a000-7f056884a000 rw-p 00000000 00:00 0 [stack:19195]
7f056884a000-7f056884b000 ---p 00000000 00:00 0
7f056884b000-7f05692d8000 rw-p 00000000 00:00 0 [stack:19194]
7f0569465000-7f056948f000 r-xp 00000000 08:03 21505461 /opt/mysql/server-5.6/lib/plugin/libmemcached.so
7f056948f000-7f056968f000 ---p 0002a000 08:03 21505461 /opt/mysql/server-5.6/lib/plugin/libmemcached.so
7f056968f000-7f0569691000 rw-p 0002a000 08:03 21505461 /opt/mysql/server-5.6/lib/plugin/libmemcached.so
7f0569691000-7f0569694000 rw-p 00000000 00:00 0
7f0569694000-7f0569695000 ---p 00000000 00:00 0
7f0569695000-7f05696c5000 rw-p 00000000 00:00 0 [stack:20139]
7f05696c5000-7f05696c6000 ---p 00000000 00:00 0
7f05696c6000-7f05696f6000 rw-p 00000000 00:00 0 [stack:19203]
7f05696f6000-7f05696f7000 ---p 00000000 00:00 0
7f05696f7000-7f0569ef7000 rw-p 00000000 00:00 0 [stack:19192]
7f0569ef7000-7f0569ef8000 ---p 00000000 00:00 0
7f0569ef8000-7f056a6f8000 rw-p 00000000 00:00 0 [stack:19191]
7f056a6f8000-7f056a6f9000 ---p 00000000 00:00 0
7f056a6f9000-7f056aef9000 rw-p 00000000 00:00 0 [stack:19190]
7f056aef9000-7f056aefa000 ---p 00000000 00:00 0
7f056aefa000-7f056b6fa000 rw-p 00000000 00:00 0 [stack:19189]
7f056b6fa000-7f056b6fb000 ---p 00000000 00:00 0
7f056b6fb000-7f056befb000 rw-p 00000000 00:00 0 [stack:19188]
7f056befb000-7f056befc000 ---p 00000000 00:00 0
7f056befc000-7f056c6fc000 rw-p 00000000 00:00 0 [stack:19187]
7f056c6fc000-7f056c6fd000 ---p 00000000 00:00 0
7f056c6fd000-7f056cefd000 rw-p 00000000 00:00 0 [stack:19186]
7f056cefd000-7f056cefe000 ---p 00000000 00:00 0
7f056cefe000-7f056d6fe000 rw-p 00000000 00:00 0 [stack:19185]
最佳答案
这是一个错误,由于您发布的服务器崩溃日志,您的连接正在关闭。
这个问题是已知的,希望在未来的版本中得到修复,同时您可以避免使用表前缀 (@@bb),因为这是问题的关键。
关于mysql - 尝试从 memcached 检索过期对象时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21325148/
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev
我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
我在Rails工作并有以下类(class):classPlayer当我运行时bundleexecrailsconsole然后尝试:a=Player.new("me",5.0,"UCLA")我回来了:=>#我不知道为什么Player对象不会在这里初始化。关于可能导致此问题的操作/解释的任何建议?谢谢,马里奥格 最佳答案 havenoideawhythePlayerobjectwouldn'tbeinitializedhere它没有初始化很简单,因为你还没有初始化它!您已经覆盖了ActiveRecord::Base初始化方法,但您没有调
我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file