BLOGTIMES
» ArchiveList (Tag for "mysql / php" )
«Prev || 1 · | Next»
2020/11/05

php + MariaDB で Malformed communication packet というエラーが出るときは

mysql  php  centos7 

今日は朝から php + MariaDB の環境で以下のエラーが発生して困ってしまいました。

500 SQLSTATE[HY000]: General error: 1835 Malformed communication packet (SQL: select * from ・・・・)

Malformed communication packet というエラーは初めて見たかもしれません。

MariaDB をダウングレードして暫定対処

原因としては MariaDB のバージョンアップに起因するようなので、以下のように MariaDB をダウングレードして暫定対象しました。

systemctl stop mariadb yum downgrade MariaDB-server MariaDB-common MariaDB-shared MariaDB-client MariaDB-compat MariaDB-devel --skip-broken yum --showduplicates search MariaDB-* yum install MariaDB-server-10.4.15-1.el7.centos.x86_64 MariaDB-client-10.4.15-1.el7.centos.x86_64 systemctl status mariadb systemctl enable mariadb

同じ話題が Stack Overflow にも

以下の Stack Overflow のエントリににもあるように、意外と同じところでハマった人は多いようです。
これを見ると PHP 7.3 では発生しないという話も出ているので PHP 7.1 と最新版の Maria DB の問題みたいですね。


    at 12:58 |
    2016/11/12

    MySQL で implode() のようなことがしたい

    mysql  php 

    MySQL (MariaDB)で PHP で言うところの implode() をやりたいと思っていろいろ調べてみたら、GROUP_CONCAT()*1 を使えば一撃で実現できることが分かったのでメモ。

    例えば以下のようなテーブルがあったときに GROUP_CONCAT() を使うとこんな感じになります。
    GROUP_CONCAT() には DISTINCT や ORDER BY が効くところもポイントです。

    SELECT * FROM foo; +---+ | a | +---+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | +---+
    SELECT GROUP_CONCAT(a ORDER BY a DESC SEPARATOR ',') AS aaaaa FROM foo; +-------------+ | aaaaa | +-------------+ | 6,5,4,3,2,1 | +-------------+

    カンマ区切りのデータの検索は FIND_IN_SET() で

    カンマ区切りになった1つのフィールドから、一致するデータの個数を返してくれるのが FIND_IN_SET()*2

    真っ当な正規化を行っていればこんな関数のお世話になる機会はないはずですが、テーブル設計の時に「どうせ検索条件としてこのフィールドは使わないはずだから、非正規形のままカンマ区切りでフィールドにいれちゃえ」なんていう無精をしたりするとお世話になることがあります。真っ当な解決方法としてはテーブル構造を正規化することですが、それがイヤな場合はFULLTEXT インデックスを使ったりしていましたが、一番お手軽に解決できるのが FIND_IN_SET() です。パフォーマンス的にはアレかもしれないので注意は必要ですけどね。

    実際の例としては以下のような感じになります。FIND_IN_SET() の第1引数は検索する文字列第2引数はカンマ区切りの文字列で、返り値は見つかった個数(見つからないときは 0 )になります。GROUP_CONCAT() と違ってセパレーターが指定できないので、元になる文字列の構造には注意が必要です。

    SELECT FIND_IN_SET('2','1,2,3,2,4,5,6') AS result; +--------+ | result | +--------+ | 2 | +--------+

    at 13:46 |
    2006/09/22

    WindowsにApacheとPHPを一括インストール

    httpd  mysql  php 

    これまでローカルのPHP開発環境はすべてのサーバ用ソフトウェア(Apache, PHP, MySQLなど)を個別にインストールしていたんですが、今回、開発環境を再構築するにあたってこれらが1つのパッケージになったものを使ってみました。結論から言えば、ひとつひとつソフトウェアをセットアップしていくよりも格段に楽でした。

    いちおう有名どころとしては、XAMPPAppServがあります。どちらも似たようなものですが、微妙な違いがあるようなので、これらを軽く触ってみて僕はXAMPPでインストールしました。

    [WindowsにApacheとPHPを一括インストール の続きを読む]

      at 21:03 |
      «Prev || 1 · | Next»
      » ArchiveList (Tag for "mysql / php" )