mysql

UTC文字列をJSTへ変換する

結論から述べると次のようなメソッドを用意。 面倒だった。 import pytz from pytz import timezone from dateutil import parser def utc2jst(utc): datestr = str(utc).replace('T', ' ') return pytz.timezone('UTC').localize(parser.parse(datestr)).as…

一度Primary Keyを設定している状態だと、一旦消さないと、Alter tableで複合主キーを設定できないようだ

これ、裏は取っていないが、恐らくそうだろう。テーブルに1つの主キーを設定していた状態で、Alter tableでもう1つ主キーを追加しようとしたらエラー。 Error1068 multiple primary key defined 実行したAlter文はこれ。 ALTER TABLE テーブル名 ADD PRIMA…

rootユーザで「/etc/init.d/mysql start」を実行してもMySQLが起動しない。

MySQLが起動しなくなってハマった。 [root@hostname user]# /etc/init.d/mysql start Starting MySQL...The server quit without updating PID file (/var/lib/mysql/hostname.pid). [失敗]何かのはずみで誰かがPID fileを消してしまって存在しないので、そ…

Python+MySQLでストアドプロシージャの実行(最後)〜SQLAlchemyでプロシージャを実行した結果はtupleのリストになってしまう

ここまで続いてきた失敗だらけの履歴。 pythonのフレームワークはbottle、ORマッパーはSQLAlchemyを使用。・「Python+MySQLでストアドプロシージャの実行」 ・「Python+MySQLでストアドプロシージャの実行(続き)〜複数結果の取得はcursor.nextset()で順次…

Python+MySQLでストアドプロシージャの実行(続き)〜複数結果の取得はcursor.nextset()で順次取得

前回「Python+MySQLでストアドプロシージャの実行」で期待通りの結果にならなかった原因が判明。前回のコード。 #raw_connectionの取得 engine = dbMapper.create_engine(url, echo=False) connection = engine.raw_connection() # Query実行 cursor = conne…

Python+MySQLでストアドプロシージャの実行

ストアドプロシージャを作成。下記はサンプル。 CREATE DEFINER=`DBユーザ名`@`%` PROCEDURE `ストアドプロシージャ名`(IN _dateStr VARCHAR(12)) BEGIN # Variables DECLARE done INT; DECLARE _stockCode INT; DECLARE selectCount INT; # Cursor DECLARE …

Python+MySQLで開発時に「UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 113: invalid start byte」

ここまで、下記2つのエントリーを進めてきた。 ・「Python+SQLAlchemy+MySQLでORマッピング」 ・Python+SQLAlchemy+MySQLでORマッピング 〜 select ここでハマった。次のエラーが発生するが原因が分からない。 UnicodeDecodeError: 'utf-8' codec can't deco…

Python+SQLAlchemy+MySQLでORマッピング 〜 select

「Python+SQLAlchemy+MySQLでORマッピング」の続き。次のようにして、条件検索が出来る。 テーブル指定は、select()の引数に[Tableオブジェクト]を指定する。 列にアクセスするには、「Tableオブジェクト.c.列名」とする。 import sqlalchemy as dbMapper ・…

Python+SQLAlchemy+MySQLでORマッピング

「Python+SQLAlchemy+MySQLでDB接続」ではSQLを直接記述して実行したが、今回はSQLを記述せずにDBアクセスを行う。つまり、SQLAlchemyのORマッピング機能を使用して、SQLを書かずにSQLを実行する。要点だけを記載したコードは次。 import sqlalchemy as dbMa…

Python+SQLAlchemy+MySQLでDB接続

BottleでWEBアプリ作ろうとしていて「PythonでWEBアプリを作成する 〜 WEBアプリフレームワーク「Bottle」を使用してみる」では簡単なものを作ってみたが、SQL書くの面倒。 なので、ORマッパー「SQLAlchemy」を使ってみる。pipで「SQLAlchemy」をインストー…

MySQLで、副問い合わせで検索した複数のカラムの値を条件として、同じテーブルのデータを削除する

タイトルに書いたことを次のように実施しようとしてエラーとなった。 delete from スキーマ名.テーブル名 where (カラム1,カラム2) IN( SELECT カラム1 ,MAX(カラム2) as カラム2 from スキーマ名.テーブル名 where 条件カラム3=1 and カラム1 IN (1,…

IN句を使用してselectで条件付き検索した結果を、IN句で指定した順番で抽出する

field句を使用して、次のようにすれば良い。 ポイントは、field句でカラム名を囲む際に、バッククォート(`)を使用すること。アポストロフィーだと期待する動きにならない。 SELECT id FROM table where id in (1,5,3,2) order by field(`id`, 1,5,3,2) ; …

【MySQL】既存テーブルと同じ内容でテストテーブルを作成する方法

「create table 〜like・・・」でテーブル定義を複製して、「insert into 〜select」でデータをコピーすると良い。 create table DB名.テストテーブル名 like DB名.元テーブル名; insert into DB名.テストテーブル名 select * from DB名.元テーブル名;

mysqlで異なるデータベース間でのデータベースの移行ってどうやるんだっけ?

【やりたいこと】 異なるデータベース間でのデータベースの移行。 例えば、db2を新規に作成して、そこにdb1の内容を移行したい。【当初想定していた実施方法】 ①移行先データベースを作成する create database db2; ②移行元データベースdb1のダンプを取得す…

mysqldumpの処理が終わらない

今のところ原因調査中だが、おそらくデッドロックだろうと推測している。実行しているコマンドは次のもの。 $mysqldump -h192.168.1.20 -uユーザID -pパスワード -x --databases データベース名 | mysql -h192.168.1.20 -uユーザID -pパスワードこれ、同じサ…

シェル実行でSQLの結果をカンマ区切りでファイルへ出力するコマンド

CSVファイルをカンマ区切りでだしたいとき。 mysql -uユーザ名 -pパスワード -e "SQL文" | sed -e "s/\t/,/g" > .outputFile.csv

データの存在チェックを実施して、存在しない場合にinsert文を実行する

次のSQL文は、「select * from DB名.テーブル名 where col1='2013-12-31' and col2='3:00:00'」を実行した結果が存在しない場合に、「select *」を実行する。 select * from DB名.テーブル名 where not exists (select * from DB名.テーブル名 where col1='2…

MySQLでテーブル毎のデータ件数の確認

それぞれのテーブルに格納されているデータ件数を一度に纏めて表示する場合には次のSQLを発行すれば良い。 mysql> use information_schema; mysql> select table_schema, table_name, table_rows from tables; 実行結果は次のようになる。 mysql user 7 perf…

C言語でMySQLへ接続するためのAPI

「C言語でMySQLへ接続」では、簡単なプログラムでMySQLへ接続してみた。 APIの意味も理解しないまま、試しに動かしてみたので、一度簡単に整理しておく。 ※)正確な情報は公式ページを参照。「C言語でMySQLへ接続」で登場したAPIは次の8つ。 ・mysql_init ・…

MySQLのUpdate

MySQLをアップデートした時の手順。 5.6.20から5.6.21へアップデートした。 ※)今回は壊しても問題がない自宅の環境での作業メモだが、仕事など壊せない環境の場合は検証環境で検討を重ねた上で手順を作成して実施すること。この手順をそのまま鵜呑みにしな…

【未解決だけど解決?】mysql_configが存在しない

Ubuntu14にmysqlをインストールしている。 mysql_configが実行できない。 root@ubuntu:~# mysql_config The program 'mysql_config' can be found in the following packages: * libmysqlclient-dev * libmariadbclient-dev Try: apt-get install <selected package> apt-get i</selected>…

MySQLへホスト名を指定してリモートアクセス

常識的な話。わざわざblogにするまでもないことだけど、時間が無いし、最近更新していないので何でもいいからメモしておく。リモートのMySQLへアクセスする。①アクセスするMySQLがインストールされているOSのIPアドレスを確認する root@ubuntu:~# /sbin/ifco…

(続)MySQLでのレプリケーション 〜 実践編1「レプリケーションの設定」

「MySQLでのレプリケーション」では、レプリケーションの定義や種類、概念、レプリケーションの用途およびメリット・デメリットについて触れた。 今回は、実際にレプリケーション環境を構築してみる。 その前に、レプリケーション環境を構築するといっても、…

(続)MySQLでのレプリケーション 〜 実践編2「レプリケーションの運用」

「MySQLでのレプリケーション」ではレプリケーションの概要を述べ、「(続)MySQLでのレプリケーション 〜 実践編1「レプリケーションの設定」」では実際にMySQLのレプリケーション設定を行い、レプリケーション構成を稼働させた。今回は、MySQLを稼働させ…

MySQLでのレプリケーション

目次 ◎レプリケーションとは ◎レプリケーションの用途およびメリット・デメリット ◎レプリケーションの設定方法 ◎レプリケーションの運用 ◎レプリケーションとは レプリケーションとは、あるMySQLサーバで更新されたデータを別のMySQLサーバに複製する機能。…

MySQLを起動すると「No directory, logging in with HOME=/」と表示される

MySQLを起動しようとすると、次のようになる。 起動は成功するが、「No directory, logging in with HOME=/」というメッセージがでている。 root@ubuntu:~# /etc/init.d/mysql start No directory, logging in with HOME=/ ...... * MySQL Community Server …

MySQLバックアップの基礎

ここでは次の事項について概要を述べる。 ◎バックアップとは ◎バックアップが必要な理由 ◎バックアップの種類 ◎バックアップの対象 ◎バックアップの手順 ◎リカバリの方法 ◎バックアップとは コピーを作成し、たとえ問題が起きてもデータを復旧できるように備…

MySQLの運用基礎知識 〜 運用に必要な代表的なファイル

◎ログファイル ログファイル名 mysqldの起動オプション 説明 出力先 errorログ --log-error サーバから出力されるエラーメッセージを記録する。--log-warnings=数字を指定すると、ワーニングも記録する。 my.cnfまたはmy.iniにファイル名を指定する。指定し…

MySQLのアーキテクチャ概要

クライアントからのMySQLサーバへの接続、MySQLサーバでのSQLの解析・発行、MySQLサーバでのデータの保存は、次のようになっている。◎クライアント クライアント側でMySQLサーバと通信を行うインタフェースはlibmysqlclient(windowsの場合は、libmysql.dll)…

MySQLがデータを保管する場所 〜 データディレクトリ

MySQLでは、データの保管場所を原則としてデータディレクトリとしている。ただし、これは原則であって、InnoDBなどのストレージエンジンでは必ずしもそうではないことを初めに述べておく。さて、データディレクトリは、「MySQL導入のポイント 〜 Ubuntu14にM…