I'm beginning to setup a production environment for my site, and am taking what steps I can to improve performance. As such, I've recently installed the various things for memcache, as well as this module (and many of the patches), and APC. It wasn't till after installing APC, that I noticed this. It started w/ anonymous, but now I also get these messages as Admin:
- user warning: Unknown column 'serialized' in 'field list' query: SELECT data, created, headers, expire, serialized FROM cache_advcache_block WHERE cid = '0::garland' in /var/www/apache2-default/includes/database.mysql.inc on line 172.
- user warning: Unknown column 'serialized' in 'field list' query: INSERT INTO cache_advcache_block (data, created, expire, headers, serialized, cid) VALUES ('a:2:{i:0;O:8:\"stdClass\":11:{s:6:\"module\";s:4:\"user\";s:5:\"delta\";s:1:\"0\";s:5:\"theme\";s:7:\"garland\";s:6:\"status\";s:1:\"1\";s:6:\"weight\";s:1:\"0\";s:6:\"region\";s:4:\"left\";s:6:\"custom\";s:1:\"0\";s:8:\"throttle\";s:1:\"0\";s:10:\"visibility\";s:1:\"0\";s:5:\"pages\";s:0:\"\";s:5:\"title\";s:0:\"\";}i:1;O:8:\"stdClass\":11:{s:6:\"module\";s:4:\"user\";s:5:\"delta\";s:1:\"1\";s:5:\"theme\";s:7:\"garland\";s:6:\"status\";s:1:\"1\";s:6:\"weight\";s:1:\"0\";s:6:\"region\";s:4:\"left\";s:6:\"custom\";s:1:\"0\";s:8:\"throttle\";s:1:\"0\";s:10:\"visibility\";s:1:\"0\";s:5:\"pages\";s:0:\"\";s:5:\"title\";s:0:\"\";}}', 1190207992, 0, '', 0, '0::garland') ON DUPLICATE KEY UPDATE data = 'a:2:{i:0;O:8:\"stdClass\":11:{s:6:\"module\";s:4:\"user\";s:5:\"delta\";s:1:\"0\";s:5:\"theme\";s:7:\"garland\";s:6:\"status\";s:1:\"1\";s:6:\"weight\";s:1:\"0\";s:6:\"region\";s:4:\"left\";s:6:\"custom\";s:1:\"0\";s:8:\"throttle\";s:1:\"0\";s:10:\"visibility\";s:1:\"0\";s:5:\"pages\";s:0:\"\";s:5:\"title\";s:0:\"\";}i:1;O:8:\"stdClass\":11:{s:6:\"module\";s:4:\"user\";s:5:\"delta\";s:1:\"1\";s:5:\"theme\";s:7:\"garland\";s:6:\"status\";s:1:\"1\";s:6:\"weight\";s:1:\"0\";s:6:\"region\";s:4:\"left\";s:6:\"custom\";s:1:\"0\";s:8:\"throttle\";s:1:\"0\";s:10:\"visibility\";s:1:\"0\";s:5:\"pages\";s:0:\"\";s:5:\"title\";s:0:\"\";}}', created = 1190207992, expire = 0, headers = '', serialized = 0 in /var/www/apache2-default/includes/database.mysql.inc on line 172.
I checked the table, and if there is supposed to be a serialized column in that table, it is not there. Should I roll-back the block patch and try again?
Comments
Comment #1
nrasmus commentedI did try rolling it back (which made the errors go away), but reapplying did nothing. It's ok-I can live without the block patch. Still curious about the error though.
Comment #2
nrasmus commentedI'm sorry to keep posting here--I think this issue was caused by a wacky install of the memcache module--when I installed views, I got a ton of other messages about the missing serialized column in the cache_views. I've gone ahead and created the columns in mysql manually--so far so good. I am curious though, how I might go about rerunning the memcache.install sql (mysql) with those handy variables. Any ideas? Is it necessary--ie, am I missing other important things?
Comment #3
robertdouglass commentedGood questions and valid issues. The issue, of course, is that in Drupal 6 the cache system was unified in its way for dealing with the data in the cache. Prior to that (in D5, for example), each module decided for itself whether to serialize data or not. This made a generalized cache API impossible. The patches that come with memcache module are necessary to be able to cleanly replace the cache api.
The memcache module, upon installation, adds the serialized column to all existing cache tables. It knows the core tables and it finds other cache tables by using hook_devel_caches from the devel module (it isn't a required module... no worries if you don't have it). So this created problems for people who installed memcache and then advcache because the advcache cache tables didn't have the serialized columns.
Furthermore, until yesterday I had forgotten to put advcache_block into the list of cache tables in advcache module. I've just corrected this problem. You seem to have run into this problem with is why your advcache_block table didn't have its serialized column.
To make this all a bit more robust I've now changed the advcache to install its cache tables with the serialized column. This is the format they'll have in Drupal 6, and the extra column doesn't hurt anyone.
Just as a note, I've also corrected some bugs in the taxonomy caching, so look for a new advcache release today (or soon) with all of these fixes rolled in.
Furthe
Comment #4
nrasmus commentedAh--thanks for the clarification. Glad to read the 6 will be more flexible here. In the mean time (since I stupidly installed memcache and advcache before any other modules), I'm assuming I'll just need to add the field to the appropriate cache table when/if I see any of these serialized column warnings. Is that a correct assumption?
Comment #5
robertdouglass commentedThat's correct. The only other problem with contrib module caches is the issue of double serialization. I'm working on patches that I'll include for CCK and Views. This issue comes down to this:
In D5, a module will do
The memcache module depends on the cache layer to serialize/unserialize like in D6:
Comment #6
jamesJonas commentedThanks for the issue. I needed to add the serialized column to 'cache_workflow_ng'.
Comment #7
lyricnz commentedSubmitters issue has been resolved, closing issue.
Comment #8
Anonymous (not verified) commentedAutomatically closed -- issue fixed for two weeks with no activity.