MySQL 5.5 から 5.6 へのアップグレード による影響

データベースMySQL

MySQL

 状態:-  閲覧数:830  投稿日:2016-02-15  更新日:2016-02-15
データベース / テーブル構成
・デフォルトのまま使用していたので、影響なし

PHP / PDO経由の処理
・一部でエラー発生



PHP周辺環境



影響

 閲覧数:183 投稿日:2016-02-14 更新日:2016-02-15 
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'state_id' doesn't have a default value' in
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'counter' doesn't have a default value' in

対応
ALTER TABLE `res` CHANGE `state_id` `state_id` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1';
ALTER TABLE `res` CHANGE `counter` `counter` INT(11) NOT NULL DEFAULT '0';


デモ系


Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'reading' doesn't have a default value'

対応
ALTER TABLE `status` CHANGE `reading` `reading` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;


Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'init' doesn't have a default value' in

対応
ALTER TABLE `status` CHANGE `init` `init` VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;


Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'document' doesn't have a default value' in
対応
ALTER TABLE `status` CHANGE `document` `document` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;


Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'document_url' doesn't have a default value' in
対応
ALTER TABLE `status` CHANGE `document_url` `document_url` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'counter' doesn't have a default value' in
対応
ALTER TABLE `status` CHANGE `counter` `counter` INT(11) NOT NULL DEFAULT '0';





Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'fonticon' doesn't have a default value' in

対応
ALTER TABLE `category` CHANGE `fonticon` `fonticon` VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;


Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'color' doesn't have a default value' in
対応
ALTER TABLE `category` CHANGE `color` `color` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;



Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'description' doesn't have a default value' in
対応
ALTER TABLE `category` CHANGE `description` `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;


Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'count' doesn't have a default value' in
対応
ALTER TABLE `category` CHANGE `count` `count` INT(11) NOT NULL DEFAULT '0';

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'order_no' doesn't have a default value'
対応
ALTER TABLE `category` CHANGE `order_no` `order_no` INT(11) NOT NULL DEFAULT '1';

Fatal error: Class 'Imagick' not found in


5.6以降

 閲覧数:180 投稿日:2016-02-15 更新日:2016-02-15 
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'category_id' at row 1' in
対応
・失敗
ALTER TABLE `status` CHANGE `category_id` `category_id` INT(11) NOT NULL DEFAULT '1';
成功
・失敗
▼StatusRepository.php
        if(!is_int($category_id)){
         $category_id=1;
       }



大前提


POST送信値は全て文字列型として扱われる
・POSTで受信した値を数字判定するためis_int関数を使用すると、結果は常にfalse


MySQL5.5以前


文字列型の値category_idをintカラムへINSERT可能
$sql = "
 INSERT INTO status (category_id, category)
   VALUES(:category_id, :category)
";
$stmt = $this->execute($sql, array(
 ':category_id'=> $category_id,
 ':category'=> $category,
));



MySQL5.6以降


文字列型の値category_idをintカラムへINSERT不可能

これは、MySQL5.6より前のバージョンに対して有効でした。5.6以降ではエラーをスローします。
INSERT INTO foo (my_bool) VALUES ('')
MySQL 5.6 BOOL behavior when using PDO and prepared statements







最近PDOを使っていてハマったこと2つ。

MySQL5.6とPDOで数値列を含むデータを配列などでまとめて渡すには?




MySQL 5.6 BOOL behavior when using PDO and prepared statements




bindParam()とbindValue()の違い
【PDO】bindParamとbindValueの違い
PDOStatement->bindValue: 値をパラメータにバインドする (PDOStatement)


MySQL 5.5 から 5.6 へのアップグレード

mysqldump: Couldn't execute 'SHOW TRIGGERS LIKE : Got error 28 from storage engine (1030)



週間人気ページランキング / 9-19 → 9-25
順位 ページタイトル抜粋 アクセス数
1 Nginx設定。エラーログレベル | Nginx(Webサーバ) 16
2 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 15
3 PHPのmb_send_mail関数でメール送信できない | メール処理システム 11
4 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 10
5 tar: これは tar アーカイブではないようです 8
5 ImageMagick と imagick の違い | ImageMagick(ソフトウェアスイート) 8
5 さくらVPS0 8
6 manページ日本語表示 | CentOS 7 (CentOS) 7
6 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 7
7 ABRT により 問題が検出されました | CentOS 7 (CentOS) 6
7 Reached target Shutdown メッセージが表示されたあと、シャットダウンまたは再起動プロセスがハングアップする | CentOS 7 (CentOS) 6
7 PHPファイルでchmodエラー | PHP(プログラミング言語) 6
7 echo と cat の違い 6
8 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 5
8 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 5
8 「CentOS6」から「CentOS7」への移行 | CentOS 7 (CentOS) 5
8 「さくらVPS」で、「CentOS6」を「CentOS7」へ変更するためには? | CentOS 7 2週間無料のお試し期間 Link(さくらVPS) 5
9 6回目-10.Nginxでバーチャルホスト設定確認 | CentOS 7 2週間無料のお試し期間 6回目(さくらVPS) 4
9 cronで定期実行しているphpファイルを、コマンドライン経由で即時実行する | cron(Linuxコマンド) 4
9 MySQL 5.5 から 5.6 へのアップグレード | MySQL(データベース) 4
2021/9/26 1:01 更新