かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

MySQL

Docker コンテナ内の MySQL にコンテナ外からアクセスできないにハマる ERROR 1045 (28000): Access denied

docker-compose で作成した MySQL にコンテナ外から mysql コマンドでアクセスしようとしたら Access denied になるにハマったのメモ。※ 本エントリーは経過と事象のメモで詳しく調べてはいません。 環境 Mac OS 11.6 Docker desktop 4.5.0 MySQL 8.0.28 (Ho…

MySQL 1回のクエリで取れたデータを別々の条件別にカウントしたい

SELECT 全体のレコード数, 条件A の総数, 条件B の総数 FROM テーブル WHERE 条件 GROUP BY カラム こんな感じで特定の条件でグループ化したデータをグルーピングされた中で、さらに条件別に数を出したい。 例えばユーザーの購入レコードがあって、ユーザー…

Docker nginx + PHP7 + MySQL8 で Laravel 触れる環境つくってみた

構成 /-- docker-compose.yaml |- /docker | |- /php | |- /nginx | |- /mysql | |- /data # MySQLのデータの永続化 |- /laravel # Laravel アプリがインストールされるディレクトリ 使い方 https://github.com/KiKiKi-KiKi/docker-laravel からコードをDLし…

Docker Nginx + PHP + MySQL + Redis な環境作った。

Docker 一年生なので、雰囲気で作っています。 構成 /-- docker-compose.yml |- /web | |- /html … web root |- /mysql | |- Dockerfile | |- my.conf | |- /init | |- 1_dd.sql … DB 初期化 |- /nginx | |- nginx.conf | |- /log | |- access.log | |- erro…

MySQL CREATE TABLE timestamp 型のカラムの default 値を NULL にしようとしてハマる

Docker の MySQL で build 時にデータベースとテーブルを作ろうとしていたのですが、エラーが発生してコンテナが起動できなくなっていました。 原因を調べてみた結果どうやらテーブル作成でエラーが出ていたのが原因でした。 MySQL v5.7 エラーの発生した CR…

Docker nginx + PHP (PDO) + MySQL + frontend な SPA 開発環境作った

インフラ知識皆無なので Docker は雰囲気で使っています。 構成 / |- docker-compose.yml |- /api |- /frontend | |- Dockerfile |- /mysql | |- /data | |- /init | | |- 1_ddl.sql | |- Dockerfile | |- my.cnf |- /nginx | |- nginx.conf |- /php |- Dock…

MySQL カラム名にハマる

バグ踏みの達人です。 PHP から MySQL のデータを更新しようとして珍しいバグを踏んだのでメモ 何故かエラーになる あるテーブルに次のようなコードでデータを入れようとしたらエラーになりました。

MySQL 関連性のないテーブルから取ってきたデータをINSERTしたい。

こんにちは。ジョニー別府です。イェー! idols, brands, typeという別々のテーブルに入っているデータを基に stage のデータを作りたい! テーブルの構成 idols table: アイドルハニーたちの名前とタイプ +----+-----------------+---------+ | id | name | ty…

MySQL 重複したデータを1件だけ残して削除したい

テーブル table_a id name typeID 1 星宮いちご 1 2 霧矢あおい 2 3 紫吹蘭 3 4 神崎美月 3 5 星宮いちご 1 6 大空あかり 1 7 藤堂ユリカ 2 8 有栖川おとめ 4 9 星宮いちご 1 10 霧矢あおい 2 このテーブルからnameとtypeIDが重複されているデータを最初の1…

MySQL グループ化した条件で取得したデータを削除 / 変更にハマる

テーブル table_a id name typeID 1 星宮いちご 1 2 霧矢あおい 2 3 紫吹蘭 3 4 大空あかり 1 table_aのtypeIDカラムのデータが重複してるレコードを削除しようとして次のようなSQLを発行しました。 DELETE FROM table_a WHERE typeID IN ( SELECT typeID FR…

MySQL 複数のコラムをGROUP BYして条件にしたレコードを取得したい

MySQL 5.7 以上でGROUP BYしてレコードをまるっと取ってくる方法は分かりました。 複数のカラムをGROUP BYして検索条件にしてレコードを取ってきたいと思います。 テーブル table_a id name typeID 1 星宮いちご 1 2 霧矢あおい 2 3 紫吹蘭 3 4 神崎美月 3 5…

MySQL GROUP BYしたらエラーになった

お久しぶりのMySQL。 MySQLで重複してるデータを取ろうとしました。 SELECT * FROM table_a GROUP BY name HAVING COUNT(*) >= 2; Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.table_a.id' which is n…

docker内のMySQLに接続したい

docker-compose upで立ち上げたアプリで使用してるMySQLにアクセスしたメモ。 尚dockerの事はよくわかってない。 アプリの起動 $ docker-compose up MySQLのホストとポート番号の確認 $ docker ps 現在起動中のコンテナの一覧が出力されるのでmysqlのコンテ…

WordPress PHP 7.x でデータベース接続確立エラー

php.iniを開いてdefault_socketをチェックしよう。WordPressはmysqli.default_socketが設定されてないとデータベース接続確立エラーになるみたい。

MySQL mysql.socketがどこにあるか探したい。

`$ mysql_config --socket` で探せる

WordPress pre_get_posts内でSQLをカスタムするフィルターを使う時に注意すること

※ この記事は古いWordPress (v4.1)を触っていて発生した現象なので、新しいWordPress環境では発生しない可能性があります。

PHP phpbrewで古い環境のPHPを動作させたメモ

別の人が作成した古いWordPressの改修の依頼が来て、環境つくりに時間がかかったのでメモをしておきます。 レンタルサーバーで動いているサイトだったのでPHP + Apache + MySQLという構成です。 要件

Mac OSX High Sierra 開発環境セットアップのメモ (4) MySQL 8.0

1. MySQLのインストール HomebrewでMySQLをインストールする $ brew install mysql $ mysql --version mysql Ver 8.0.11 for osx10.13 on x86_64 (Homebrew) v8.011がインストールされました。 2. MySQLの環境設定 MySQLの起動 $ mysql.server start rootユ…

WordPress pre_get_posts・WP_Query 別々の条件で記事を取得したい

WordPressのWP_Queryやpre_get_postsアクション内で投稿を取ってくる時に、一緒にできない複数の条件(複数のSELECT文が必要な条件)で投稿を取得したいような時のメモ。 メインループ外の場合は2回WP_Queryを実行(SQLを発行)してそれぞれ取得したデータの配列…

WordPress MySQL 特定のカスタムフィールドの値が存在しない投稿を取得したい。

WordPressのデータベースでは、カスタムフィールドの値は{$pre_fix}postmetaテーブルに登録されます。 postmeta テーブル +------------+---------------------+ | Field | Type | +------------+---------------------+ | meta_id | bigint(20) unsigned | …

MySQL UNION それぞれのSELECT文で取ってきたデータを、それぞれでソート(ORDER BY)してくっつけたい。

MySQLで別々の条件(SELECT文)で取ってきたデータをそれぞれでソートして結合したい。 という事で、2回SQLを発行して取ってきたデータをマージしてしまえば実現できることなのですが、SQL1回で実現できないかと思い調べていて色々とハマったのでメモ。 テーブ…

PHP56 Macを再起動したらlibphp5.soが消えてapacheが起動できなくなった。

Macを再起動して普段通りapacheを起動しようとしたら次の様なエラーが表示されるようになってしまいました。先方の環境に合わせてPHP56です $ sudo apachectl start httpd: Syntax error on line 170 of /usr/local/etc/apache2/2.4/httpd.conf: Cannot load…

PHP PDO 複数条件(WHERE IN)にハマる

PHPのPDOで複数のidのデータをまとめて取ってくるとかで WHERE IN を使おうとしてハマったのでメモ。 配列のまま渡しても取得できない。 prepare($sql); $stmt->bindValue(':ids', $ids, PDO::PARAM_INT); $stmt->execute(); $res = $stmt->fetchAll(); var_…

Ruby mysql2のメモ

RubyでMySQLとデータのやり取りをしたいと思いました。 gemで探すとライブラリがヒマラヤ程たくさん出ててどれが良いのか良く解りませんでした。。。 こちらの記事を参考に、とりあえずmysql2を使ってみましたのでメモ データを取ってきてループして表示させ…

PHP PDO UPDATE時にそのまま値をインクリメント/デクリメントしたい。

前もって現在の値を取得しなくても、 UPDATEのSQLのSET節でインクリメントなら カラム名 = カラム名 + 1、デクリメントなら カラム名 = カラム名 - 1という形で記述すれば変更できる。 prepare($sql); // 略 特定のインクリメントに限らず特定の数の足し引き…

Homebrew MySQLをアップデートしたらmysql.sockが無くなってエラーが出るようになった。

HomebrewでMySQLを5.6.26にアップデートしました。 その後でmysqlを起動しようとした所下記のようなエラーが出るようになってしまいました。 $ mysql.server start ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.soc…

MySQL WHEREでnullのデータを検索条件にしたい

PHPのPDOでWHEREの検索条件をnullにしてsqlを発行したいと思い下記のようなSQLを作ってみました。 SELECT * FROM {$TABLE} WHERE {$COLUMN} = null; 残念ながらこれだと上手く取得できませんでした。 nullを検索条件にする時はis nullを使うと良いようです。…

heteml コマンドでmysqlに繋ぐ方法

hetemlサーバーにsshでアクセスしてコマンドからmysqlを使いたい時 $ mysql -u <アカウント名> -p ではパスワードが合っていてもエラーになりmysqlを使えません。少し長たらしいですが下記のコマンドでmysqlに繋ぐことが出来ます。 $ mysql -u <アカウント名…