MySQL
久し振り(?)にRailsな開発環境をローカルに作ろうとしたところ、エラーで苦しんだのでメモです。
この記事は CakePHP Advent Calendar 2019 の7日目の記事です。今年はCakeFestが東京で開催され、筆者もそこで少しばかりお話をさせて頂いたのですが、この内容は英語でしか発信していませんでした。どこかの機会で日本語でも喋ろうと思っていたのですがタイ…
CakePHPでちょっとハマったのでメモ。 三行まとめ nested transaction サポートしてないという思い込み、怖い。 フレームワークのソースを読んでみよう。 トランザクションに関わるコードはきちんと書け。
仕事もプライベートもUnicode無しには考えられないという時代になって久しいですが、皆様いかがお過ごしでしょうか。 私は元気ですが、文字のことが頭から離れる日はありません。さて、3月に東京に遊びに行ったとき、渋谷のとある書店に立ち寄ったのですが、…
先月の話ですが、鳥取県は米子に行ってきました。 中国地方DB勉強会 #19 を動機とした旅行計画でしたが、かなり満喫することができました。(続きを読む 際は写真が多くなることに注意)
SQLで、select文の結果を、新規に作成するテーブルへ突っ込む方法があります。きちんと構築するアプリケーションの中で使うことは稀ですが、ささっとバックアップを取得したり、手軽にデータ分析をやったりとか、そういった用途で本当によく使います。 先日…
先日、会社の業務システムを刷新してきました。 書けること書けないこと色々ありますが、書けることだけかいつまんで、概要だけ紹介したいと思います。 もちろん、後年、自分自身で振り返ったときのためのメモでもあります。 形態と規模 一般的なLAMP(Linux…
最近はMySQLのStoredProcedureを書きまくってる生活を送っています。さて、プログラムの可読性を保つ為に、次のようなテクニックを使うことがあります。 if( 何か条件式 ) { // 何もしないよ! ; } else { // 何か複雑な処理 this.someComplicatedMethod1();…
またまたMySQLでハマったのでメモ。 現象 実行できないはず(エラーになるはず)のSQL文が、MySQLでは実行できてしまいます。 具体的には、not null 制約のある列に対して null 値を格納させようとしても、実行できてしまう場合があります。 サンプルデータ…
脇の甘い技術者というのは世の中には多く存在していて、日本に居た時もAustraliaに来てからも、SQLi (SQL Injection) 脆弱性を見つけたり治したりすることは多々ありました。 基本的にはエスケープをかけるか Prepared Statement を使うかの2択で、可能な限…
またもやMySQLで完全にハマったのでメモ。 症状 投げたクエリが、帰ってくる気配が無い。 process list を見ると、当該のクエリは "Copying to tmp table" と言っている。 当該クエリから ORDER BY 句を除いて実行すると、応答が無いのは同じだが、process l…
この記事はMySQLのdisってる記事…のように見えるかもしれませんが、「長年継ぎ足して熟成されてきた秘伝のソース」をdisる記事です。 原理?は MySQLのGroup By - 職業プログラマの休日出勤 や distinct と order by - 職業プログラマの休日出勤 と同じです…
きっと GROUP BY のときの話 と同じ理屈なんでしょうけど、困ってしまったので記事に書いておきます。 テスト用テーブルの定義と、テストデータ(PostgreSQLでもMySQLでも動作OK) create table test20121028 ( id int primary key, data1 text not null ); …
数日前、またしてもMySQLの罠?に引っ掛かってしまったのでメモ。 どうやら、update文中のsubqueryでは、update対象テーブルをselectしてはいけないらしいです。 テスト用テーブル create table test20120831( id int primary key, category_name text, data…
MySQLの Group By でハマったのでメモ。 テスト用テーブルの定義(PostgreSQLでもMySQLでも動作OK) create table hogehoge ( id int primary key, classification varchar(10), value numeric(5) ); テスト用データ insert into hogehoge values (1, 'test'…