Sorry to interrupt this talk, but I would like to share my new test result.
@ Dr. CSS : This massive error occured with 1.9.1 as well, as I tested yesterday. I'm sure it has to do with the new database schema.
I haven't tried 1.9.0 since 1.9.1 was already out when I realised the new version

Versions from 1.7.1 onwards didn't have any problems with upgrading to 1.9.x.
It may help to know that my old database was first created in November 2006. In these times I used Latin1 character set, both on the collation and as a field character set. Since then every upgrade was quite smooth, with smaller hickups now and then which I can't recall anymore
By this time of upgrade the database was on utf8_unicode_ci, both in collation and field character sets. My $config['default_encoding'] and my $config['admin_encoding'] are both 'utf-8', $config['set_names'] setting to false instead of default true didn't help either.
For the last 6 hours I tried to understand what happened.
I thought the error could originate from the new character set structure applied with this upgrade. For one reason: Whenever I cleared the four content tables and re-inserted the default content shipped with version 1.9.2, all went smooth and the content was shown like normal, even with all other tables still bearing old content. All menus rendered as normal, the pages didn't got broken. The moment I re-inserted my old content, the menu manager went ballistic again.
Here is a list of things I tried without success:
1. Comparing the sql structure of the old and the new database, especially the four content tables.
My old structure looked like this:
Code: Select all
CREATE TABLE `cms_content` (
`content_id` int(11) NOT NULL,
`content_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`type` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
`owner_id` int(11) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
`template_id` int(11) DEFAULT NULL,
`item_order` int(11) DEFAULT NULL,
`hierarchy` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`default_content` tinyint(4) DEFAULT NULL,
`menu_text` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`content_alias` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`show_in_menu` tinyint(4) DEFAULT NULL,
`collapsed` tinyint(4) DEFAULT NULL,
`markup` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
`active` tinyint(4) DEFAULT NULL,
`cachable` tinyint(4) DEFAULT NULL,
`id_hierarchy` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`hierarchy_path` text COLLATE utf8_unicode_ci,
`prop_names` text COLLATE utf8_unicode_ci,
`metadata` text COLLATE utf8_unicode_ci,
`titleattribute` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`tabindex` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`accesskey` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
`last_modified_by` int(11) DEFAULT NULL,
`create_date` datetime DEFAULT NULL,
`modified_date` datetime DEFAULT NULL,
`secure` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`content_id`),
KEY `content_alias` (`content_alias`,`active`),
KEY `default_content` (`default_content`),
KEY `parent_id` (`parent_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- --------------------------------------------------------
CREATE TABLE `cms_content_props` (
`content_id` int(11) DEFAULT NULL,
`type` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
`prop_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`param1` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`param2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`param3` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`content` text COLLATE utf8_unicode_ci,
`create_date` datetime DEFAULT NULL,
`modified_date` datetime DEFAULT NULL,
KEY `content_id` (`content_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- --------------------------------------------------------
CREATE TABLE `cms_content_props_seq` (
`id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- --------------------------------------------------------
CREATE TABLE `cms_content_seq` (
`id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
You can see, there are lots and lots of 'COLLATE=utf8_unicode_ci' and completely different key names.
It's somewhat different than the new structure (here only shown for 'cms_content':
Code: Select all
CREATE TABLE IF NOT EXISTS `cms_content` (
`content_id` int(11) NOT NULL,
`content_name` varchar(255) DEFAULT NULL,
`type` varchar(25) DEFAULT NULL,
`owner_id` int(11) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
`template_id` int(11) DEFAULT NULL,
`item_order` int(11) DEFAULT NULL,
`hierarchy` varchar(255) DEFAULT NULL,
`default_content` tinyint(4) DEFAULT NULL,
`menu_text` varchar(255) DEFAULT NULL,
`content_alias` varchar(255) DEFAULT NULL,
`show_in_menu` tinyint(4) DEFAULT NULL,
`collapsed` tinyint(4) DEFAULT NULL,
`markup` varchar(25) DEFAULT NULL,
`active` tinyint(4) DEFAULT NULL,
`cachable` tinyint(4) DEFAULT NULL,
`id_hierarchy` varchar(255) DEFAULT NULL,
`hierarchy_path` text,
`prop_names` text,
`metadata` text,
`titleattribute` varchar(255) DEFAULT NULL,
`tabindex` varchar(10) DEFAULT NULL,
`accesskey` varchar(5) DEFAULT NULL,
`last_modified_by` int(11) DEFAULT NULL,
`create_date` datetime DEFAULT NULL,
`modified_date` datetime DEFAULT NULL,
`secure` tinyint(4) DEFAULT NULL,
`page_url` varchar(255) DEFAULT NULL,
PRIMARY KEY (`content_id`),
KEY `cms_index_content_by_content_alias_active` (`content_alias`,`active`),
KEY `cms_index_content_by_default_content` (`default_content`),
KEY `cms_index_content_by_parent_id` (`parent_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
2. I deleted these four tables, created them again with the new structure and re-inserted the old content, even deleted the (now new) index keys and created them again by hand.
No difference, same error as before.
3. I compared the content of 'cms_content' and the field types.
The field 'secure" was NULL in my old table and 0 (zero as an integer) in the new one. I changed all NULL to 0.
No difference, same error as before.
3. I tried to mix the old with the new content by appending some old content with phpMyAdmin. That worked for a moment, but then CMSms started to number consecutively the content in the page tree, in a deeply wrong way. From now on all pages and chapters started with the Number 2 besides the home page. My Goodness!
So I deleted every content again, re-inserted the originally shipped content and inserted some fresh pages. That worked, but now my old content is gone. Completely unacceptable of course, since I have to upgrade two very old databases anytime soon - one with 400 pages for a private project and one with over 200 pages for a client.
For now I have to stick to version 1.8.2.
I sincerely hope that you'll find a safe and working way to upgrade.
Edit at 03:49 in the morning local time:
I could provide a test sql database if you need it. I would send you a pm with a download link if you want
Oh and by the way: Within this test database I tried to delete some pages, but that was not always possible. Especially pages with subpages created this error: Fatal error: Call to a member function Id() on a non-object in D:\Projekte\CMSms\1b_192mix\admin\multicontent.php on line 150
It was not reproducable which particular page type wouldn't get deleted, it was completely random.
Thank you for your time!
Amendra