menu_router cannot be converted to MySQL 5.x Cluster NDB engine type

Swampcritter - March 4, 2009 - 18:32
Project:Drupal
Version:7.x-dev
Component:menu system
Category:feature request
Priority:normal
Assigned:Unassigned
Status:active
Issue tags:cluster, MySQL, ndb
Description

Upon trying to use the MySQL 5.0 Cluster (ndbcluster engine), it seems that tables that are both using a utf8 charset and that has >1 columns of the type text or mediumtext fails to convert. MySQL reported this as not a bug, but a limitation of the NDB Engine.

CREATE TABLE `menu_router` (
`path` varchar(255) NOT NULL default '',
`load_functions` text NOT NULL,
`to_arg_functions` text NOT NULL,
`access_callback` varchar(255) NOT NULL default '',
`access_arguments` text,
`page_callback` varchar(255) NOT NULL default '',
`page_arguments` text,
`fit` int(11) NOT NULL default '0',
`number_parts` smallint(6) NOT NULL default '0',
`tab_parent` varchar(255) NOT NULL default '',
`tab_root` varchar(255) NOT NULL default '',
`title` varchar(255) NOT NULL default '',
`title_callback` varchar(255) NOT NULL default '',
`title_arguments` varchar(255) NOT NULL default '',
`type` int(11) NOT NULL default '0',
`block_callback` varchar(255) NOT NULL default '',
`description` text NOT NULL,
`position` varchar(255) NOT NULL default '',
`weight` int(11) NOT NULL default '0',
`file` mediumtext,
PRIMARY KEY (`path`),
KEY `fit` (`fit`),
KEY `tab_parent` (`tab_parent`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Suggested fix:
The alter table will work if only one column is of the type text or mediumtext.

Reference:
http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster-limitations-databas...

#1

alanburke - March 27, 2009 - 09:10

Subscribe...
Hit this as well.

I got it installed by manually creating the table.

It seemed to work well... but then I hit errors like

user warning: Lock wait timeout exceeded; try restarting transaction query: menu_link_save /* root : menu_link_save */ UPDATE menu_links SET menu_name = 'admin_menu', plid = 1998, link_path = 'admin_menu/flush-cache', router_path = 'admin_menu/flush-cache', hidden = 0, external = 0, has_children = 1, expanded = 0, weight = 20, depth = 2, p1 = 1998, p2 = 2319, p3 = 0, p4 = 0, p5 = 0, p6 = 0, p7 = 0, p8 = 0, p9 = 0, module = 'admin_menu', link_title = 'Flush all caches', options = 'a:2:{s:5:\"alter\";b:1;s:5:\"query\";s:11:\"destination\";}', customized = 0 WHERE mlid = 2319 in /www_data/Aspen/www/www/research/nfb/includes/menu.inc on line 1972.
    * user warning: Lock wait timeout exceeded; try restarting transaction query: _menu_update_parental_status /* root : _menu_update_parental_status */ UPDATE menu_links SET has_children = 1 WHERE mlid = 1998 in /www_data/Aspen/www/www/research/nfb/includes/menu.inc on line 2174.

#2

Damien Tournoud - March 27, 2009 - 09:23
Priority:critical» normal
Status:active» postponed (maintainer needs more info)

Upon trying to use the MySQL 5.0 Cluster (ndbcluster engine), it seems that tables that are both using a utf8 charset and that has >1 columns of the type text or mediumtext fails to convert. MySQL reported this as not a bug, but a limitation of the NDB Engine.

That's a pretty harsh limitation of the engine. Can you point me to where it is documented?

#3

Swampcritter - March 31, 2009 - 15:00

CREATE/ALTER TABLE fails when using NDBCLUSTER engine and CHARSET=utf8
http://bugs.mysql.com/bug.php?id=41099

Limits Associated with Database Objects in MySQL Cluster
http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster-limitations-databas...

#4

alanburke - June 2, 2009 - 15:52
Status:postponed (maintainer needs more info)» active

#5

Damien Tournoud - June 2, 2009 - 16:02
Version:6.10» 7.x-dev
Component:mysql database» menu system
Category:bug report» feature request

We could probably make this table use only one text column. Anyway, this is not a bug, but a feature request. Moving to Drupal 7.

#6

Damien Tournoud - June 2, 2009 - 16:05

I clarified that Drupal doesn't support NDB tables in the requirements page. [1]

[1] http://drupal.org/node/270/revisions/view/519412/577658

 
 

Drupal is a registered trademark of Dries Buytaert.