mysql
  • django
  • django-models
  • mysql-error-1267
  • 2009-07-02 5 views 20 likes 
    20

    Ich sehedjango Charakter mit MySQL gesetzt Seltsamkeit

    OperationalError (1267, "Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='") 
    

    Es ist wie einige meiner Variablen aussieht sind UTF8 Strings

    'name': ‚p \ XC7 \ x9d \ xca \ x87 \ XC9 \ x9f \ xc4 \ xb1 \ xc9 \ xa5s Abzeichen '

    Ist dies ein Konfigurationsproblem? Wenn ja, wie kann ich es lösen? Ich würde gerne alles in Unicode behandeln (denke ich).

    Antwort

    11

    Es scheint, dass Ihre Datenbank standardmäßig latin1_swedish_ci lautet und daher nicht alle utf8-Zeichen akzeptieren kann. Sie müssen die Konfiguration der MySQL-Datenbanktabellen ändern, um utf8_general_ci zu verwenden. Eine gute Blogpost darüber (mit Links zu einem Werkzeug) an MySQL Performance Blog

    40

    Sie gefunden werden können, über die Shell die Tabelle Codierung ändern:

    $ manage.py shell 
    >>> from django.db import connection 
    >>> cursor = connection.cursor() 
    >>> cursor.execute('SHOW TABLES') 
    >>> results=[] 
    >>> for row in cursor.fetchall(): results.append(row) 
    >>> for row in results: cursor.execute('ALTER TABLE %s CONVERT TO CHARACTER SET utf8 COLLATE  utf8_general_ci;' % (row[0])) 
    

    https://mayan.readthedocs.org/en/v0.13/faq/index.html

    +6

    Das funktionierte großartig! Aber bedenken Sie, dass Ihr Datenbank-Zeichensatz unverändert bleibt. Um ihn zu ändern, führen Sie auch folgendes aus: 'ALTER DATABASE Datenbankname CHARACTER SET utf8;' – Caumons

    +0

    Sie müssen möglicherweise auch die * Spalten * jeder Tabelle aktualisieren, nicht nur die Datenbank und ihre Tabellen . – Nick

     Verwandte Themen

    • Keine verwandten Themen^_^