SQL

ストアドファンクション生成 Error Code: 1419

SQL

他人が構築したDBを引き継ぐのは、嫌なもので状況を把握しないまま、 MySQL ストアドファンクションを追加したら、 Error Code: 1419. You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bi…

PostgreSQL のアップサートとMySQLのアップサート

SQL

PostgreSQL に馴染みがなく、アップサートあるいは、SERIAL に困惑している。 MySQL には、AUTO INCREMENT があり、例えば、以下のようなテーブル CREATE TABLE sample ( id INT NOT NULL AUTO_INCREMENT, point INT, price INT, PRIMARY KEY (id) ) ENGINE=…

MySQL で UPSERT する時に考えること

SQL

MySQL で UPSERT をするとき、REPLACE を使うべきか? INSERT のオプション ON DUPLICATE KEY UPDATE を使うべきか?REPLACE は、キー重複する行を削除してから INSERT することを考えると、ON DUPLICATE KEY UPDATE の方が 更新する列を指定できるから良い…

GROUP_CONCAT を書く時の注意とメモ。

SQL

たまにしか書かない、GROUP_CONCAT の書式をよく忘れるのでメモ。 GROUP_CONCAT( 列名 [ ORDER BY 順序つける列名 ] [ SEPARATOR 区切り文字] ) 注意しなければならないのは CONCAT対象の列の値が NULL の場合、 SEPARATOR を指定しても区切り文字もつかず全…

MySQL Error code 1418 , ストアドFUNCTION 作成で、

MySQL で ストアドFUNCTION 作成で、 Error Code: 1418. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators…

Linux MySQL dump → Windows 復元

MySQL ダンプを復元するとき、通常は、 mysql -u ユーザ名 -p データベース名 < ダンプファイル でも、Linux の MySQLでダンプしたものを Windows で復元を同じコマンドで実行してしまうと、 Unknown command '\'' と、エラーになってしまう。当然と言えばそ…

MySQLワークベンチでエラーコード=2013 の場合

SQL

MySQL ワークベンチで、時間かかるプロシジャなどを実行していると Error Code: 2013 Lost connection to MySQL server during query 600.135 sec となってしまうことがある。 こういう場合、設定でSQLEditer の中のMySQL Session のDBMS connection keep-al…

請求月とサイトから支払期限日を求めるストアドFUNCTION

SQL

MySQL のストアドFUNCTION として請求月とサイト(支払い期限までの日数)から、 支払期限日(DATE型)を求めるものを作ってみました。 請求が末締めで、末日からのサイト(日数)を求めるものとします。 サイト日数の仕様は、1ヶ月を30日として定義して…

zeroDateTimeBehavior

MySQL をJavaで使用してTIMESTAMP や DATETIME をJavaのオブジェクトに変換する時、データに0が入ってたりすると、 Value '0000-00-00' can not be represented as java.sql.Timestamp JDBC SQLException を発生してしまう。Java用のMySQLコネクタ…

mybatis で、MULTIPLE INSERT を書く

MyBatisで、MUTIPLE INSERT を実行するのは、foreach を使います。 例) //テーブルのデータ定義クラス→Item public class Item implements Serializable{ public String item; public int price; public Item(){ } } // mybatis の SQLセッション、…

GROUPCONCAT の注意

SQL

MySQL の GROUPCONCAT 連結した文字数に制限があった。 思わねところでハマった。 show variables like 'group_concat_max_len'; で確認すると、1024 これがデフォルト! うっかりすると超えてしまう。 環境変数:group_concat_max_len をセットすれば良…

TIMESTAMP カラム

SQL

以前、MySQL のテーブルを作るときに悩んだのが、TIMESTAMP をデフォルト値として持つテーブル作成する時、 2つ以上の TIMESTAMP で、デフォルト値をセットしようとするとダメなことです。 前に、、 http://blog.zaq.ne.jp/oboe2uran/article/914/ で書いた…