Docker MySQL エラー:chown: changing ownership of

コンテナ:app(PHP), db (MySQL), server(Nginx)の場合です。 なぜこのエラーが出るか おそらく、dbのコンテナでmy.cnfをvolumeマウントしている。 imageは mysql-server(Oracle)でもmysql(Docker公式)でもよい。 mysqlの方を使うのが標準ではある。 解決方法 別ファイル名にしてマウント すでにmysqlのdocker公…Continue reading Docker MySQL エラー:chown: changing ownership of

【PHP】PDOのFETCH_CLASSを使って「モデル」っぽくDBを扱う方法

「フレームワークを使わないバニラなPHP」で開発する場合、DBから取得したデータをどう扱うか? FETCH_ASSOC で連想配列として回すと楽に思えるが、「クラス(オブジェクト)」 に流し込むと、コードの見通しが良くなる。 1. フェッチモード(データの受け取り方) PDOでデータを取得する際、fetch() や fetchAll() の引数に指定する「モード」によって、返ってくるデータの形が変…Continue reading 【PHP】PDOのFETCH_CLASSを使って「モデル」っぽくDBを扱う方法

SQLの実行 PDOオブジェクト、PDO Statementオブジェクト

PDOオブジェクト データベースに接続するためのオブジェクトであり、query関数を使うことでクエリを実行し、PDO Statementオブジェクトを取得できる。 プレースホルダーを使用したクエリを実行するには、PDOオブジェクトを使用してPDOStatementオブジェクトを取得し、その後、それを使用してクエリを実行する。 以下例 PDO Statementオブジェクト PHPからSQLを実行す…Continue reading SQLの実行 PDOオブジェクト、PDO Statementオブジェクト

SQL nullと文字列の比較

nullとの比較 SQLであるカラムと文字列を比較したとき、そのカラムがNullだと条件に当てはまらなくなる。 以上のような場合、CLMがNullだと当てはまらないのは当然だが、 以下はどうだろう? ‘a’ という文字列以外のなので、CLMがNullの行も取得できそうな気がする。 しかし、取得できない。 CLMがNullの場合、比較されないので、行は取得できない。 ISNU…Continue reading SQL nullと文字列の比較

SQLserverとMySQLの主なクエリの違い

使ってみて気づいた違いを書いていきます。 随時追加予定。 ISNULL -> COALESCE NULLのときの値置換 WITH (NOLOCK) 使えない のようなSQLを実行しないといけない。 VARCHARではなくCHARで指定 文字列を固定長でキャスト GETDATE()ではなくNOW() ほかにCURRENT_TIMESTAMP()がある。ほぼ同じ。 テーブル作成時、サーバー接続時…Continue reading SQLserverとMySQLの主なクエリの違い

SQL serverからMySQLへデータ移行(スクリプト化して移行が簡単)クエリでCSVインポート

MySQL WorkbenchやSQL Server Integration Servicesを使わずに、 スクリプトで移行する方法を試す。 データベースのスクリプト化 SQLserverにて、移行したいデータベースを右クリック「タスク」→「スクリプトの生成」→「次へ」→ データベース全体か特定のデータベースを選択 →テーブルを選択したら「次へ」→ 詳細設定の部分で、「スクリプトを作成するデータの…Continue reading SQL serverからMySQLへデータ移行(スクリプト化して移行が簡単)クエリでCSVインポート

WHERE句内でCASE文を使うとき、THENには比較演算子は使えない (SQL Server)

タイトルの通り。 SQL Serverでは、WHERE句内でCASE文を使用する際に、THEN句内で比較演算子を直接使用することはできません。比較演算子を使用するためには、CASE文の結果を一時的な列に格納し、その列をWHERE句で使用する必要があります。 ChatGPT SQLのWHERE句内で条件分岐したいときがある。 通常下のように のような感じ書くことが多いだろう。 しかし、 GENDER…Continue reading WHERE句内でCASE文を使うとき、THENには比較演算子は使えない (SQL Server)

SQL Server サブクエリを使ったInsert

カラムの数は合わせる必要がある。 テーブル作成時にInsert 番号を順番に振ってアップデート すでにあるテーブルのデータのとあるカラムに上から順番に番号を振りたいとき まず順番に番号を振ったテーブルを作る このとき、アップデートしたいテーブルの何か一意のデータが必要。 方法はいろいろあるが、numberカラムにidentityをつける。 テーブルを右クリック、IDENTITY設定を「はい」にする…Continue reading SQL Server サブクエリを使ったInsert