cari

Rumah  >  Soal Jawab  >  teks badan

Sila laporkan kepada pembangun: PDO::__construct(): Set aksara yang dihantar pelayan (255) tidak dikenali oleh klien

Saya cuba menyambung ke pangkalan data MySQL daripada aplikasi Symfony 3. Tetapi apabila cuba mencipta skema MySQL daripada arahan konsol Symfony, saya mendapat ralat ini: PDO::__construct(): 服务器发送了客户端未知的字符集 (255)。请向开发者报告

PHP dan MySQL kedua-duanya dijalankan dalam bekas Docker.

Versi MySQL: 8.0.1

Versi PHP: 7.1.3

Pemandu:pdo_mysql

Set watak:UTF8

dsn: "mysql:host=mysql;dbname=database;charset=UTF8;"

Ada idea?

P粉808697471P粉808697471462 hari yang lalu760

membalas semua(2)saya akan balas

  • P粉364642019

    P粉3646420192023-10-17 09:06:36

    Selepas menaik taraf kepada MySQL 8.0.11, saya menggunakan fail mysqli_connect()函数时遇到了与OP相同的问题。在我的 MySQL 目录(在我的例子中,usr/local/mysql)中,我创建了 my.cnf PHP, menambah kandungan daripada jawapan yang diterima dan memulakan semula pelayan MySQL. Walau bagaimanapun, ini menghasilkan ralat baharu:

    mysqli_connect():服务器请求客户端未知的身份验证方法 [caching_sha2_password]

    Saya menambah baris default_authentication_plugin = mysql_native_password,所以 my.cnf dan kini kelihatan seperti:

    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    collation-server = utf8_unicode_ci
    character-set-server = utf8
    default_authentication_plugin = mysql_native_password

    Saya sangat teruja untuk pergi!

    Lagi rujukan: https://github.com/laradock/laradock/issues/1392

    Sila ambil perhatian komen ARA1307:

    "Sila ambil perhatian bahawa anda harus membuat pengguna baharu dan nyatakan secara eksplisit "IDENTIFIED WITH mysql_native_password", dan menukar pengguna sedia ada, sebagai contoh: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';"

    balas
    0
  • P粉884548619

    P粉8845486192023-10-17 00:27:36

    MySQL 8 menukar set aksara lalai kepada utf8mb4. Tetapi sesetengah pelanggan tidak tahu set watak ini. Jadi ralat ini dilemparkan apabila pelayan melaporkan set aksara lalainya kepada klien dan klien tidak tahu maksud pelayan.

    Lihat juga https://bugs.mysql.com/bug.php?id= 71606

    Pepijat ini khusus untuk MySQL Connector/C++, jadi ia menjejaskan lebih daripada PHP sahaja.

    Penyelesaian yang betul adalah untuk menaik taraf pelanggan , tetapi sementara itu saya berjaya dengan menukar charset pelayan kepada utf8 agar serasi dengan pelanggan yang tidak dinaik taraf. Saya menambahkannya pada /etc/my.cnf dan memulakan semula mysqld:

    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    
    [mysqld]
    collation-server = utf8_unicode_ci
    character-set-server = utf8

    Saya menemui tetapan ini dalam jawapan ini dari 2010: Tukar set aksara lalai MySQL dalam my.cnf kepada UTF-8?

    balas
    0
  • Batalbalas