Moodle

notify_login_failures in cron.php causes fatal error due to illegal mix of collations

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Minor Minor
  • Resolution: Not a bug
  • Affects Version/s: 1.9
  • Fix Version/s: None
  • Component/s: Unknown
  • Labels:
    None
  • Database:
    MySQL
  • Affected Branches:
    MOODLE_19_STABLE

Description

When running cron.php (in the cleanup tasks section that only run 20% of the time), a fatal error is generated when the notify_login_failures(); function is called. Commenting out this line removes the problem.

Original Moodle install was 1.5. Has been upgraded from 1.5 to 1.6, then 1.6 to 1.7, then 1.7 to 1.8, and then 1.8 to 1.9. The utf8 database migration tool was used along the way. Looking at all my table collations, about half are utf8_general_ci and the other half are utf8_unicode_ci.

Specifically in my db, mdl_user and mdl_log are utf8_general_ci and mdl_cache_flags is utf8_unicode_ci.

Here is the full DEVELOPER bug info for the problem:

[03-Feb-2009 14:22:05] PHP Notice: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='<br /><br />SELECT l.*, u.firstname, u.lastname
FROM mdl_log l
JOIN mdl_cache_flags cf ON (l.ip = cf.name)
LEFT JOIN mdl_user u ON (l.userid = u.id)
WHERE l.module = 'login'
AND l.action = 'error'
AND l.time > 1209114906
AND cf.flagtype = 'login_failure_by_ip'
UNION ALL
SELECT l.*, u.firstname, u.lastname
FROM mdl_log l
JOIN mdl_cache_flags cf ON (l.info = cf.name)
LEFT JOIN mdl_user u ON (l.userid = u.id)
WHERE l.module = 'login'
AND l.actio in /home/frtv/public_html/members/lib/weblib.php on line 6878

[03-Feb-2009 14:22:05] PHP Fatal error: Call to a member function FetchRow() on a non-object in /mydomain/public_html/moodle/lib/dmllib.php on line 814

Was there a problem with database migration, meaning should all my tables be utf8_unicode_ci?

Activity

Hide
Petr Škoda (skodak) added a comment -

Eloy, is this a varchar x text comparison problem?

Show
Petr Škoda (skodak) added a comment - Eloy, is this a varchar x text comparison problem?
Hide
Petr Škoda (skodak) added a comment -

This is relatively common problem caused by changed server configuration or restoring of mysql dump on a server with different default collation. Solution is to manually change the collations in all text fields and configure the mysql database accordingly. Thanks for the report.

Petr

Show
Petr Škoda (skodak) added a comment - This is relatively common problem caused by changed server configuration or restoring of mysql dump on a server with different default collation. Solution is to manually change the collations in all text fields and configure the mysql database accordingly. Thanks for the report. Petr

People

Vote (0)
Watch (2)

Dates

  • Created:
    Updated:
    Resolved: