MySQLi - Server bilinmeyen tip 246 döndü

3 Cevap php

Ben localhost üzerinde çalışma para cezası olmuş bir içerik yönetilen sitede çalışan oldum. Ben sadece .. benim Mediatemple sunucusuna dosya yükledim ve bazı oldukça ilginç sonuçlar görüyorum:

Warning: mysqli_stmt::bind_result() [mysqli-stmt.bind-result]: Server returned unknown type 246. Probably your client library is incompatible with the server version you use!

Hiç kimse daha önce böyle bir şey gördü. Ben tamamen stumped! Localhost (MAMP) harika çalışıyor, ama canlı sunucuda sonları :-(.

Thanks a lot!

3 Cevap

MySQL 5.0.3, yeni bir alan türü daha doğru ile sabit-nokta matematik desteklemek için piyasaya sürüldü. Bu yeni alan türü bir sayısal değer 246 ile MySQL protokol tanımlanır.

Eğer MySQL sunucusu çalıştıran 5.0.x veya daha yüksek olması, ve NUMERIC veya DECIMAL kullanırsanız, MySQL kullanılan DECIMAL alan türü ile uyumsuz 4.x istemcisi.

http://dev.mysql.com/doc/refman/5.0/en/upgrading-from-previous-series.html diyor ki:

MySQL 5.0 sunucusunun DECIMAL veri türünde yeni bir uygulama olduğundan sunucu hala MySQL 4.1 istemci kütüphaneleri karşı bağlantılı eski müşterileri tarafından kullanılması halinde, bir sorun oluşabilir. Bir istemci, sayısal değerler içeren bir sonuç kümesi oluşturmak hazırlanmış deyimleri yürütmek için ikili istemci / sunucu protokolünü kullanıyorsa, bir hata ortaya olacak: 'Using unsupported buffer type: 246'

4.1 istemci kütüphaneleri 5.0 ile eklenen yeni MYSQL_TYPE_NEWDECIMAL türü değeri desteklemediği için bu hata oluşur. Sunucu tarafında yeni DECIMAL veri türünü devre dışı bırakmak için bir yolu yoktur. MySQL 5.0 'dan istemci kütüphaneleri ile uygulamayı relinking sorunu önleyebilirsiniz.

Ayrıca bkz: http://bugs.php.net/bug.php?id=35536

Siz PHP, MySQL istemci kütüphanesi yükselterek bu sorunu çözmek gerekir. PHP yeniden, yoksa sadece yeni bir MySQL istemci ikili bırakın ya.

En iyisi aslında beni şaşırtan yeni mysqlnd library, which gives you a lot of benefits to performance and functionality. That library is included in the source distribution of PHP 5.3 and later. It states in the FAQ that it requires PHP 5.3, kullanmak olacaktır, ama derler.

Desteklenen olana kadar veritabanında float için ONDALIK türünü değiştirin.

Bu bir MySQL sürümü sorun olmalı.

Bu başka bir forumda ne buldum:

apt-get source php5-mysqli
cd php5-...
./configure --with-mysqli=/usr/bin/mysql_config --without-mysql
make
cp ext/mysqli/modules/mysqli.so /usr/lib/php5/...

Açıkçası muhtemelen farklı klasör adları var, ama fikir olsun umuyoruz.