Lebih
PDO::__construct(): Server mengirim charset (255) yang tidak diketahui oleh klien. Tolong, laporkan ke pengembang
Saya mencoba untuk terhubung ke database MySQL dari aplikasi Symfony 3. Tetapi ketika mencoba membuat skema MySQL dari perintah konsol Symfony, saya mendapatkan kesalahan ini: PDO::__construct(): Server mengirim charset (255) yang tidak diketahui oleh klien. Tolong, laporkan ke pengembang
Baik PHP dan MySQL berjalan dalam kontainer Docker.
Versi MySQL: 8.0.1
Versi PHP: 7.1.3
Pengemudi: pdo_mysql
charset: UTF8
dsn: "mysql:host=mysql;dbname=database;charset=UTF8;"
Ada ide?
28
3
MySQL 8 mengubah charset default ke utfmb4. Tetapi beberapa klien tidak mengetahui charset ini. Oleh karena itu, ketika server melaporkan charset default-nya ke klien, dan klien tidak tahu apa yang dimaksud server, maka server akan melempar kesalahan ini.
Lihat juga https://bugs.mysql.com/bug.php?id=71606
Bug itu bertentangan dengan Konektor MySQL/C++ sehingga tidak hanya mempengaruhi PHP.
Oke-saya membuatnya berfungsi dengan mengubah set karakter ke utf8, agar kompatibel dengan klien yang tidak di-upgrade. Saya menambahkan ini ke /etc/my.cnf dan memulai ulang mysqld:
Saya menemukan pengaturan ini dalam jawaban dari tahun 2010: https://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnf
Jawaban yang diterima menyelamatkan saya (terima kasih, Bill!!!), tetapi saya mengalami masalah lain yang terkait, hanya ingin memberikan beberapa rincian tentang pengalaman saya -
Setelah meng-upgrade ke MySQL 8.0.11, saya mengalami masalah yang sama dengan OP ketika menggunakan fungsi
mysqli_connect()
PHP. Dalam direktori MySQL saya (dalam kasus saya,usr/local/mysql
), saya membuat filemy.cnf
, menambahkan konten dalam jawaban yang diterima, lalu memulai ulang server MySQL. Namun, ini menghasilkan kesalahan baru:mysqli_connect(): Server meminta metode otentikasi yang tidak diketahui oleh klien [caching_sha2_password]
Saya menambahkan baris
default_authentication_plugin = mysql_native_password
, sehinggamy.cnf
sekarang tampak seperti:dan saya sudah siap untuk pergi!
Untuk referensi tambahan: https://github.com/laradock/laradock/issues/1392
Saya memiliki masalah yang sama untuk terhubung ke sistem lokal.
Saya memeriksa di daftar layanan (Run->Services.msc->Enter) wampmysqld64 telah dihentikan.
Saya memulai ulang. dan bisa login.