Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Emoji kann nicht in der Datenbank gespeichert werden

Okay, ich habe es endlich geschafft, dass es funktioniert! Vielen Dank an alle, die versucht haben, mir zu helfen, insbesondere an @Rick James und @Gerard Roche.

VORSCHLAG:

Wenn Sie mit Emojis arbeiten müssen, machen Sie zunächst einfache Tests auf localhost. Erstellen Sie eine neue Datenbank und erstellen Sie eine neue App zu Testzwecken.

Wenn Sie den Schritten folgen, die ich in der Frage geschrieben habe, oder wenn Sie diesem Tutorial folgen: https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4 es muss funktionieren.

Wenn Sie lokal an einer frischen Basis-App arbeiten, haben Sie mehr Kontrolle und mehr Platz, um alle Tests durchzuführen, die Sie benötigen.

LÖSUNG:

In meinem Fall lag das Problem in der Konfiguration der Datenbank in CodeIgniter. Es hat den char_set und die Sortierung wegen eines dummen Übersehens nicht richtig eingerichtet:Ich habe die Datenbankeinstellungen in der Funktion zum Speichern von Nachrichten überschrieben, um sicherzustellen, dass sie mit der mobilen Datenbank funktioniert.

VORHER:

function message_save ( $data = FALSE )
{   
    $project_db_config                  = array();
    $project_db_config['hostname']      = 'MY_HOST';
    $project_db_config['username']      = 'MY_USERNAME';
    $project_db_config['password']      = 'MY_PASSWORD';
    $project_db_config['database']      = 'MY_DATABASE';

    $mobile_db                          = $this->load->database( $project_db_config, TRUE );

    // other code to save message       
}

NACH:

function message_save ( $data = FALSE )
{
    $mobile_db_connection = $this->load->database('admin_mobile_mh', TRUE);

    // other code to save message
}

SCHLUSSFOLGERUNG:

Die App muss die Verbindung zur Datenbank richtig einstellen. Wenn Sie die Datenbank richtig eingerichtet haben, aber keine richtige Verbindung mit Ihrer App herstellen, funktioniert sie nicht.

Wenn Sie also auf ähnliche Probleme stoßen, vergewissern Sie sich, dass die API den char_set richtig eingerichtet hat als utf8mb4 und db_collat als utf8mb4_unicode_ci .