ERROR/ForkPoolWorker-5 "Could not create course outline for course"

I was forced to update from Nutmeg tutor v 14.0.3 to tutor v 14.2.5 today due to the py2neo bug which prevents me from running quickstart again on my platform.

Now when I update a class, it doesn’t show as updated for students. I see the following error in my log:

cms-worker_1                 | [2024-02-19 20:27:37,392: ERROR/ForkPoolWorker-5] cms.djangoapps.contentstore.tasks.update_outline_from_modulestore_task[beeb623e-6aff-47ff-a03d-256d92e9738a]: Could not create course outline for course course-v1:MySite+MyClass+2023
cms-worker_1                 | MySQLdb._exceptions.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x93\\x9D\\xE2\\x86...' for column 'title' at row 1")
cms-worker_1                 |     replace_course_outline(course_outline_data, content_errors=content_errors)
cms-worker_1                 | django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x93\\x9D\\xE2\\x86...' for column 'title' at row 1")
cms-worker_1                 | [2024-02-19 20:27:37,396: ERROR/ForkPoolWorker-5] Task cms.djangoapps.contentstore.tasks.update_outline_from_modulestore_task[beeb623e-6aff-47ff-a03d-256d92e9738a] raised unexpected: OperationalError(1366, "Incorrect string value: '\\xF0\\x9F\\x93\\x9D\\xE2\\x86...' for column 'title' at row 1")
cms-worker_1                 | MySQLdb._exceptions.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x93\\x9D\\xE2\\x86...' for column 'title' at row 1")
cms-worker_1                 |     replace_course_outline(course_outline_data, content_errors=content_errors)
cms-worker_1                 | django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x93\\x9D\\xE2\\x86...' for column 'title' at row 1")
cms-worker_1                 | [2024-02-19 20:27:38,207: ERROR/ForkPoolWorker-3] Task openedx.core.djangoapps.bookmarks.tasks.update_xblocks_cache[8ee95ae2-a492-4755-bbd5-4ab32b4c2d60] raised unexpected: OperationalError(1366, "Incorrect string value: '\\xF0\\x9F\\x93\\x9D\\xE2\\x86...' for column 'display_name' at row 1")
cms-worker_1                 | MySQLdb._exceptions.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x93\\x9D\\xE2\\x86...' for column 'display_name' at row 1")
cms-worker_1                 | django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x93\\x9D\\xE2\\x86...' for column 'display_name' at row 1")

Based on the fact that Nutmeg is known to have regressed emoji support compared to earlier versions, and the fact that it’s mentioning a non-ASCII-range string like “\xF0\x9F\x93\x9D\xE2\x86…” I’m suspecting this is due to whatever emoji workaround I had done based on that previous thread, breaking upon update from tutor 14.0.3 to 14.2.5.

There are no forum hits or google hits for the error “Could not create course outline for course” though, so I figured I should start at least one thread as I try to figure this out, in case anyone knows for sure it is or isn’t the emoji issue. (And because I myself frequently run into the same Open edX bugs and then find my old posts with solutions.) I would note though that I have removed all emojis from the class and the issue still persists.

I used this page to look up the 4 byte unicode symbol “\xF0\x9F\x93\x9D” and then found where it was in my class. By removing all emojis from the class, it got back to working.