mySQL: UTF8MB4 conversion failed

Hello!

Nextcloud version : 12.0.1
Operating system and version: Debian 7.11
Apache or nginx version: NGINX 1.11.10
PHP version : 7.0.22
Is this the first time you’ve seen this error: Yes

The issue you are facing:
After upgrade this morning to NC 12.0.1, the News app complains about wrong character set (UTF8-bin instead of UTF8MB4

Trying to convert to UTF8MB4, but it complains altering the first table:

mysql> ALTER TABLE `oc_prod`.`oc_activity` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs

Reason is clear, some rows have the wrong site - but no idea, how I can figure out, which of the rows I need to change (and to which value).

Anyone has any hint here?

Alternatively, I read that I can also bypass this problem switching to PostgreSQL - is there any tutorial how to do it for Nextcloud? Could the same Nextcloud command like mentioned here also being used to convert from mySQL to PostgreSQL?

Thanks for any good idea, how to solve this issue!

Cheers Peter

My guess is that not all apps (like activity) support converting to mb4. Main reason for that is that they specifiy character lengths which are out of bound if you bump them to 4 bytes (e.g. VARCHAR(255) with index on mysql)

As for switching to postgres: there is no official tool, only Google

Well - there is a tool to convert - here the command line:

php console.php db:convert-type --all-apps pgsql nc_prod_user localhost nc_prod

But when I execute, I get the following message:

Creating schema in new database
The following tables will not be converted:
oc_bookmarks
oc_bookmarks_tags
oc_lucene_status
Continue with the conversion (y/n)? [n]

Hmm - not sure if I will need those tables - anyone has any idea?

Ciao Peter

Hi Peter,

I currently went back to Nextcloud 11 after running in the same problems as you did.

I guess you deactivated the “Activity” app? I had so, too - but after activating it was updated and could be converted.

The problem I wasn’t able to solve is ‘oc_addressbooks’. All I found was someone who tried to solve it manually, but I’m not sure this will not create other problems. If you’re interested in the solution, see https://github.com/nextcloud/news/issues/155

Regards,
anmith

I have now converted the database with the Nextcloud updater to PostgreSQL and it looks ok, the message within the News-App now disappeared. Unfortunately, no update of News is done. Cron-Job still running without any error, but no new news displayed from the various RSS feeds configured.

Anyone using the News-App with 12.0.1 and has the same problem?

Cheers Peter

Try to re-enable the app, maybe related to https://github.com/nextcloud/news/issues/155

1 Like

Had simular issues, if you havent allredy, check out this in the manual, fixed my issues :slight_smile:
https://docs.nextcloud.com/server/12/admin_manual/configuration_database/mysql_4byte_support.html

Perfect - that was easy! Works now!

No this did not work for me. I’ve also tried to de-install this app and also dropped oc_news_folders, oc_news_feeds and oc_news_items tables in mysql database. Even after new fresh install of this app non-utf8 message appears. This leads me to the conclusion, that the App itself seem to have a problem with NC 12 database.

Well, you need to convert the whole database, not just the news tables and also configure your instance to use mb4, otherwise the tables will just be recreated in the old format

Btw, conversion to utf8mb4 of whole database including oc_activity worked well for me. So the activity app does not generally fail there. Was on mariadb 10.1 after converting to barracuda file system according to admin manual.

Good Morning, does this

ALTER DATABASE
AnyNextcloudDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;

not do this job already? This is was already done when re-installed the app.

All varchar and longtext strings does look like this:

Did I miss something?

You have to tell nextcloud via config.php to use 4-byte, otherwise looks good. Just review the admin manual about this topic: https://docs.nextcloud.com/server/12/admin_manual/configuration_database/mysql_4byte_support.html

1 Like

Yes this worked for me, thank you very much! (happy)
Nexttime I try to RTFM :slight_smile: