ラベル MySQL の投稿を表示しています。 すべての投稿を表示
ラベル MySQL の投稿を表示しています。 すべての投稿を表示

2015年10月5日月曜日

Windows7 64bitでMySQLにODBC接続

Excel2007でODBC接続できない

Excel2007でMySQLにODBC接続しようとすると下記のエラーが発生する

指定されたDSNには、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています

原因

64bitのドライバを使っていた

対策

32bitのドライバをインストールして

C:\Windows\SysWOW64\odbcad32.exe

にてDSNを追加する

Written with StackEdit.

2015年6月7日日曜日

スキーマのみダンプ

特定のテーブルのスキーマのみダンプしたい

-dオプションを使う。

mysqldump -uroot -p -hlocalhost database_name table_name -d -r file_name 

また、-rで直接ファイルに保存できる。

2015年1月19日月曜日

スロークエリ

XAMPPのMySQLにて
SET GLOBAL slow_query_log=ON
SET GLOBAL slow_query_log_file=mysql-slow.log
SET GLOBAL long_query_time=0.5
実行に0.5秒以上かかったクエリが記録される

2015年1月11日日曜日

同名のデータベースを作成してすべての特権を与える


CREATE USER 'foobar'@'localhost' IDENTIFIED BY 'password';

CREATE DATABASE IF NOT EXISTS `foobar` ;

GRANT ALL PRIVILEGES ON `foobar` . * TO 'foobar'@'localhost';

2015年1月4日日曜日

実行中のプロセスを表示する

MySQLが重たい時に
show full processlist;
実行中のプロセスが表示される。 怪しいプロセスはkillで殺すことができる。

2014年12月23日火曜日

グループ化して文字列の連結

MySQLの関数GROUP_CONCATを使う。
GROUP_CONCAT(tags.name)
でカンマ区切りの文字列になる。 Laravelでは
DB::raw('GROUP_CONCAT(tags.name) as tag_name')
でOK。 カラムの一部でも可能。
Model::select(['id', DB::raw('GROUP_CONCAT(tags.name) as tag_name')])

2014年12月13日土曜日

Unknown command '\n'.

レストア時にオプション
--default-character-set=utf8
を追加

2014年12月6日土曜日

whereRawの使い方

whereRaw("date_format(created_at, '%Y-%m') = ?", [$dt->format('Y-m')])
2つ目の引数にバインドするデータを配列で渡す。

2014年12月1日月曜日

MySQLで日付の比較

DATEとDATETIMEを比較するときにはキャストが必要。
select '2014-11-30 12:00' <= '2014-11-30';
は0でNG。
select CAST('2014-11-30 12:00' AS DATE) <= '2014-11-30';
は1でOK。

2014年10月16日木曜日

MySQLに外部から接続する

Ubuntuなので
/etc/mysql/my.cnf
を編集。
bind-address           = 127.0.0.1
許可したいIPアドレスに変更する。 コメントアウトですべて許可。
$ /etc/init.d/mysql reload
忘れずにリロード。

2014年10月13日月曜日

MySQLで月別クロス集計

CASE式を使う。

select 
    user_id,
    name,
    sum(date_format(created, '%Y-%m') = '2014-06') as '2014-06',
    sum(date_format(created, '%Y-%m') = '2014-07') as '2014-07',
    sum(date_format(created, '%Y-%m') = '2014-08') as '2014-08',
    count(*) total
from
    customers
        inner join
    users ON users.id = customers.user_id
where
    created between '2014-06-01' and '2014-08-01'
group by user_id;