Database JUNKY

MySQL,MariaDBを中心としたブログです

MySQL8.0にするなら、共通テーブル式を使いましょう!(WITH 〜 AS)

MySQL8.0にするなら、共通テーブル式(CTE: WITH句)を使いましょう! MySQL8.0を使いたい理由は、CTEに対応したからなんです!! そもそも、MySQL 8.0を使いたかった理由って、共通テーブル式が実装されてからなんです! 私自身は、 IBM DB2でかなりお世話に…

MySQL mysqdumpで、Error 1412: Table definition has changed

mysqldumpする際にこんなエラーを食らったことはありませんか? 現在、 MySQL5.7のデータベースをMySQL 8.0に絶賛リストア中なのですが、mysqldumpが終わりそうなところでこのエラーがコンソールに出てきて疲弊してきました(汗) mysqldump: Error 1412: Ta…

MySQL8.0 td-agent mysqlが起動できない場合の対処方法 ibmysqlclient.so.20: cannot open

こんなエラーがでてtd-agentが起動できない現象が、MySQL8.0環境下のサーバで発生しました。 libmysqlclient.so.20: cannot open shared object file: No such file or directory 今回、MySQL5.7がインストールしているサーバをMySQL8.0に入れ替えたのですが…

MySQL 8.0にアップデート!注意すべき点

MySQL 8.0 バージョンアップしたら、速度が2倍向上!便利な関数が使える!!等、色々なメリットがあります。 ・・が、 通常のサービスでデータベースがメジャーバージョンアップしたからといってサービスを停止して、バージョンアップってしないかなー?って…

MySQL 異なるバージョン間でのmysqldumpおよびリストアについて

異なるバージョン、もしくは、異なる サーバ間で、データベースのdump (mysqldump) および restore リストアを実施した時に、リストア先にデータベースもテーブルもないはずなのに、キー重複(Duplicate entry)が起きたりしたことはありませんか? え?、な…

MySQL8.0環境でのmy.cnfの設定について

バージョン変わるたびにいつも混乱する。my.cnfの設定、、今回ももれなく混乱しました。 細かいところの説明は抜きにして、これで前バージョンの必要な設定は継承したかな?ってレベルまで作り込んでみました。 my.cnf (MySQL 8.0用) Innodbのチューニング…

10分でMySQL8.0をamazon linuxにyumでインストールする!!

amazon linuxにMySQL8.0をインストール! 知ってはいたけど、なかなか、触る機会がなく、かつ、インストールすらしていない状態だったので、今回、インストールの手順をメモしました。 MySQL8.0は、2018/4/19 にリリースされ、以下の機能が更新、もしくは新…

MySQL データベース中に特定をカラム名を含むテーブルを検索する方法

例えば、User_Idというカラム名を含むテーブル名に何か変更をかけないといけないという運用が発生した場合、テーブル定義書に書かれているドキュメントを確認したりしますか?いやいや、とっても効率悪いので、information_schema.columnsを使いましょうよ!…

MySQL チューニングのど本命!索引チューニング

MySQLのチューニングで一番効果があるものは、パラメータのチューニングでもなく、はたまた、マシンのスペックでもなく、索引のチューニングです。私自身、サーバをスケールアウトしてみたり、パラメータをいじってみたりしてみましたが大した効果はないんで…

超便利!MySQL テーブル定義のデフォルト値で関数をつかっちゃおう

いままでなんで、きずかなかったのだろう。。 例えば、こんなテーブルがあったとして DROP TABLE IF EXISTS test_tab1 ; CREATE TABLE `test_tab1` ( `Id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `CreatedAt` datetime NOT NULL DEFAULT CURRENT_TIM…

SQLで変数を使う

他のDBはよくしらないですが、MySQL系のSQLをSQL文中にユーザー変数を含めることができます。この手法を理解すると、洗練されたSQLを記述することができます。 SET文を用いる方法と、SELECT ~ INTO を用いる2種類の方法があります Anker PowerCore 5000 (5…

MySQL ストアドプロシージャのHANDLERの順番には注意

ストアドプロシージャにて、トランザクションをかける場合、HANDLERの順番には注意しましょう!という話です。 Logicool ロジクール Bluetoothマウス M558出版社/メーカー: ロジクール発売日: 2013/11/21メディア: Personal Computersこの商品を含むブログ (…

MySQL ストアドプロシージャで処理を途中で抜け出す方法って知ってる?

私が知らなかっただけかもしれせんが、処理を途中で抜けることってストアドプロシージャって出来ないとばかり思っていたのですが、できるんですね汗 Kimitech Bluetooth ヘッドホン ノイズキャンセルヘッドフォン 密閉型 高音質 ワイヤレス NFC搭載 内蔵マイ…

たまにしか使わないから忘れるMySQLコマンド集メモ

たまーにしか使わないのに、その必要が急に出てきて、調べる時間が勿体無いので、ざっくりここにMySQLのDDLおよびSQLをメモしていきます。 マッスルジーニアス(Muscle Genius) チンニングバー 懸垂マシン ドア枠に引っ掛けるだけ 俺のドアジム? MG-DG02出版…

SQLでshellを作成するサンプル?

とあるテーブルの内容を元にして、SQLで、shellファイルをつくって実行しちゃおうってのを無理やりつくってみました。 テーブル定義 CREATE TABLE `files` ( `id` int(11) NOT NULL DEFAULT '0', `file_name` varchar(100) DEFAULT NULL ) ENGINE=InnoDB DEF…

Linux 特定の文字を含む行を削除したい場合、sedを使おう!

bashの処理で、ある特定の文字列が含まれる行をまるっと削除したい時ってありますよね?よね? sedコマンドでこんなに簡単にできます。

トイレの水が出ない!!修理の方法など SH381BA編

トイレの修理はお早めに! 今回は話題変えて、TOTOのトイレの修理の話をしたいと思います 結果からいいますと、トイレの水が出なくなりました厳密にいうと、タンクの中で水漏れしている気が・・する・・ 幸いにも、自宅は、トイレが2つあるので、全く使えな…

MySQL 意外と簡単!グループ連番を検索結果に付番する方法!

特に連番がないテーブルに意図的に連番を振りたいってこと、日々の運用で結構あったりませんか?以外と簡単にSQLでそれを実現できます!!! サンプルデータについて 例えば以下のようなテーブルがあり、これを題材にやってみたいと思います mysql> DESC log…

スゴ技! MySQLでレコードの異なる日時の差(引き算)を求めるSQL

やってみたら、かなり私には、高度すぎて死にかけました。 やりたいことは、 MySQLで同列の異なる行と行の引き算をSQLで書くとこうなるってことです。 やってみたいことを文書で表すと、ユーザーのログインは前回のアクセスからどれくらいの感覚でログインし…

なければINSERT、あればUPDATE(ON DUPLICATE KEY UPDATE)

レコードがなければINSERT、あればUPDATEなどどいう超便利なSQL構文があります ON DUPLICATE KEY UPDATE オプションがそれなのですが、 結構便利です、今回 MariaDBで試しておりますが、MySQLでもおそらく同様にいけると思います。

MySQL 集計結果を横倒しで出すSQL

かなり無理やりだけど、集計の結果を横倒しで表示するサンプルSQLです。 かなり、無理やりですが笑 こんなデータを。。。 +------------+------+ | wdate | cnt | +------------+------+ | 2014-01-21 | 1 | | 2014-01-22 | 20 | | 2014-01-23 | 10 | | 2014…

python3 のrequest.args.getでUnicodeEncodeErrorが出た時の対処方法

ここで書いていることって、現役エンジニアの人にしてみればちゃんちゃらおかしい話なんだろうな、なんてことをいつも思いつつも、今日もメモします。 python3でのgetでこんなエラーが出てしまいハマりました。 問題のgetはこちら word = request.args.get('…

python3関連インストールもろもろメモ

あくまでも自分だけのメモですが、これだけは、いや、あくまでも私的な話ですが必須だろうと思うものしか書いてません。 今後他にも色々出てきそうですが、その時はその時で随時追記していくつもりです。 OSは、CENTOS 6x をベースに記載しましたが、まあ、U…

python3 ヒアドキュメント で一部変数展開をする

python3でのヒアドキュメントで、一部変数が入っていた場合の置き換え方法をメモ あ、ヒアドキュメントを利用して、かつ、変数展開をするっていう、題名通りのメモです汗 ソースはこんな感じになりました。 #!/usr/bin/env python3 # -*- coding: utf-8 -*- …

知ってた!?MySQL5.6以上から日本語全文検索ができるようになったってこと・・

MySQL5.6~ で日本語全文検索ができるぞ!!! 最近MariaDBばかりやっていて、MySQLの存在を忘れていたのですが、今まで英語しか利用できなかったのに、いつの間にか標準で日本語全文検索ができるようになっていたので、久しぶりに触って見ようと思います。…

MySQL 日時表記を数字のみで表す

現在日時を、YYYY-MM-DD の形式で表示されることがもっとも普通なのですが笑、時と場合によって、日付を8桁の数字のみで表したいとかありますよね。そんな時は、DATE_FORMATでやっちゃえばいいんです。

python3 json.loadsでjsonを読み込み、for ループで特定の要素を抜き出すサンプル

通常でよく使いそうなので、python3でのjsonの読み込み、取得したjsonをforループ処理にて、一部の要素の参照するという、まぜまぜのサンプルを作って見ました。 サンプルでは、このあたりを中心に書いてますー 辞書型変数の参照( for xx in yy:) 、 json.lo…

python3から、MySQLのストアドプロシージャをCALLする

python3でコードを書いているうちに、MySQLに関わる部分のソースが煩雑になってしまうため、ビジネスロジックは、全て、MySQLのストアドプロシージャにまかせるってことでこんなに綺麗なソースじなります。(あくまでも個人的な主観ですが) なお、python3で…

python3でapiサーバを作る!!(笑)

開発の人に見せたらすごく笑われてしまいますが、ちょっと勉強用のため、ここにメモを残しておきます。 サンプルは、python3でMySQLからSELECTした結果をjsonで返すものです。自分的にapi (笑)的なもの port 5000番で待ち受けます port 8080から上記をCALL…

s3のファイル大量削除は、ライフサイクルルールでやりましょう!

awsのバケットの削除、もしくは、フォルダの中身の削除、s3のコンソールからでも行えるのですが、この中身が大量にあると一苦労。あっさり消えてくれません。もしくは、webのセッションがタイムアウトしてしまって、作業時間の無駄になってしまいますw ここ…