sql >> Database >  >> RDS >> Mysql

Kan emoji niet opslaan in database

Oké, het is me eindelijk gelukt! Bedankt aan iedereen die me heeft geprobeerd te helpen, vooral @Rick James en @Gerard Roche.

SUGGESTIE:

Als je met emoji moet werken, maak dan eerst eenvoudige tests op localhost. Maak een nieuwe database en maak een nieuwe app voor testdoeleinden.

Als je de stappen volgt die ik in de vraag heb geschreven of als je deze tutorial volgt: https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4 het moet werken.

Door lokaal aan een nieuwe basis-app te werken, heb je meer controle en meer ruimte om alle tests uit te voeren die je nodig hebt.

OPLOSSING:

In mijn geval zat het probleem in de configuratie van de database in CodeIgniter. Het stelde de char_set en de sortering niet goed in voor een stomme overzien:ik negeerde de database-instellingen in de functie die berichten opslaat om er zeker van te zijn dat het werkte met de mobiele database.

VOOR:

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       
}

NA:

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

    // other code to save message
}

CONCLUSIE:

De app moet de verbinding met de database correct instellen. Als je de database correct hebt ingesteld, maar je maakt niet de juiste verbinding met je app, zal het niet werken.

Dus als je soortgelijke problemen tegenkomt, zorg er dan voor dat de api de char_set correct instelt als utf8mb4 en db_collat als utf8mb4_unicode_ci .



  1. Converteer een opgeslagen md5-tekenreeks naar een decimale waarde in MySQL

  2. De server heeft een interne fout of verkeerde configuratie aangetroffen en kon uw verzoek niet voltooien

  3. Een getal opmaken als valuta in Oracle

  4. De parameterlimiet van 2100 bereiken (SQL Server) bij gebruik van Bevat()