Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tidak dapat menyimpan emoji di database

Oke saya akhirnya berhasil membuatnya bekerja! Terima kasih kepada semua orang yang mencoba membantu saya, terutama @Rick James dan @Gerard Roche.

Saran:

Jika Anda perlu bekerja dengan emoji, pertama-tama lakukan tes sederhana di localhost. Buat database baru dan buat aplikasi baru untuk tujuan pengujian.

Jika Anda mengikuti langkah-langkah yang saya tulis dalam pertanyaan atau jika Anda mengikuti tutorial ini: https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4 itu harus berhasil.

Bekerja secara lokal pada aplikasi dasar yang baru, Anda akan memiliki lebih banyak kontrol dan lebih banyak ruang untuk melakukan semua pengujian yang Anda butuhkan.

SOLUSI:

Dalam kasus saya masalahnya ada pada konfigurasi database di CodeIgniter. Itu tidak mengatur char_set dan collation dengan benar untuk kelalaian yang bodoh:Saya mengganti pengaturan database dalam fungsi yang menyimpan pesan untuk memastikan itu bekerja dengan database seluler.

SEBELUM:

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       
}

SETELAH:

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

    // other code to save message
}

kesimpulan:

Aplikasi harus menyetel koneksi ke database dengan benar. Jika Anda memiliki database yang disiapkan dengan benar tetapi Anda tidak membuat koneksi yang tepat dengan aplikasi Anda, itu tidak akan berfungsi.

Jadi, jika Anda mengalami masalah serupa, pastikan api mengatur char_set dengan benar sebagai utf8mb4 dan db_collat sebagai utf8mb4_unicode_ci .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah mungkin membuat kolom di MySQL dengan ekspresi sebagai nilai default?

  2. Menulis ulang mysql pilih untuk mengurangi waktu dan menulis tmp ke disk

  3. Pemformatan baris perintah MySQL dengan UTF8

  4. #1242 - Subquery mengembalikan lebih dari 1 baris - mysql

  5. Koneksi Pendaftaran Facebook