Unknown collation: ‘utf8mb4_general_ci’

xamppをいくつか使っていて(バージョン違い)、そのうちの一つを立ち上げたときにphpmyadminにアクセスしたら出てきたエラー。

utf8nb4_general_ci なんて知らないぞ(というかその立ち上げたxamppのphpmyadminで指定できる文字コードじゃないぞ)と思って困っていたら、

同じようにお困りの方の掲示板に回答が

http://forums.mysql.com/read.php?35,195219,197613#msg-197613

クッキー消してみたら?ってことだと解釈して。

クッキー消したら、アクセスできました。
他のもっと新しいバージョンのxamppでphpmyadminに接続したクッキーが駄目だったようです。よかった。

文字列の日付を比較してデータを抽出したい。

mysqlを使用している単純な更新システムで、「公開日」と今日の日付を比較してデータを抽出するとき、うまくいかなかった。(この更新システムは大昔に他の方がつくられたもので、そもそもPerlで作られている。これを今回、単にphpを使用してひっぱってきたかっただけ)

データベースに、公開日が2010/07/02の形で入っている。
これを、mysqlのクエリ文のなかで 2010/07/02 <= 2010.07/02 という風になるようにWHERE文を書くが反応しない。

いまさら、公開日の仕様もかえられないしなーと調べていたら、「UNIX_TIMESTAMP」を使用する方法が。

こんな感じに書き換えた

WHERE UNIX_TIMESTAMP(doc_start_d) <=ツꀀ “.time().” AND

これで、文字列の時間をTIMESTAMPに変更して、TIMESTAMPで比較することができた。

MySQLのカラムの文字数

まさかありえないと思っていたことが起こるんだよ実際。
ということで、MySQLの文字数のこと。

そんなにいれるわけない。なんてことありえないんだよね。
とくにエディターが入ってると、タグがどんどんかさなっちゃったりして。

TINYTEXT:255 (2^8 – 1) bytes
TEXT:65,535 (2^16 – 1) bytes
MEDIUMTEXT:16,777,215 (2^24 – 1) bytes
LONGTEXT:4,294,967,295 (2^32 – 1) bytes

MySQL 文字数の制約(@storybook.mt)
ありがとうございました。

NULLじゃなくて0が入る

mysqlを使用。

カラムの種別をintにして、フォームから空値(のつもり)を入れたところ、NULL許可のdefaultをNULLにしているのに、0が入る。
種別をvercharにしたら、NULLが入る。

種別の違いによって、””を0と受け取るんだろうか。

更新システム文字化け。

【症状】
更新システム(オリジナルスクリプト)をアップするが、日本語をいれると文字化けしまくる。
phpmyadminを使って、直接入れたデータに関しては、「十字架の記号」や「???」が出る。

### サーバーの条件 ###
Perl 5.8.5
Mysql 4.1.10a-log
####################

====スクリプトの設定====
INTER_CHARSETツꀀ = ‘euc’;ツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀ
DB_CHARSETツꀀツꀀツꀀツꀀ = ‘utf8’;ツꀀツꀀ
JS_CHARSETツꀀツꀀツꀀツꀀ = ‘utf8’;
====================

1) Jcodeがないので、Jcode.plを入れるが、Jcode.pmがないというエラーがでる。
下記記事を参考にJcode.pmを入れる(※スピーバーのサーバーの文字化けはこれで治ったから)

Jcode.pmをWindows上のPerlにインストールする (@にししふぁくとりー様

Jcode配布サイトより、zipファイルをダウンロード。重要なのはJcode.pmとJcodeフォルダ。

ツꀀ

しかし、エラーが出る。
クライアントとサーバーの文字コードの仲介役(Jcode.pm)のせいではないんだろう。
これは、mysqlの文字コードがおかしいと推察。

Continue reading