Tag: MySQL



2016年 5月 28

  • OSX El Capitan(10.11.5)
  • MAMPのバージョン 3.0.7.3 ※1
  • MySQLのバージョン 5.5.38

MAMPだとWarning (mostly harmless): No library found for -lmysqlclientのエラーでインストール出来ない。

mysql.hが存在しないため、別途インストールする必要があるようだ。

検索しているとC++ で MAMP の MySQL に接続する : あかぎメモ

まずこの記事の手順で、MySQL のヘッダファイルやライブラリを用意しておく。うまくいけば次のようなファイルができる。
/Applications/MAMP/Library/include/mysql/mysql.h
/Applications/MAMP/Library/lib/libmysqlclient.dylib

とある。このエントリーを参照してヘッダファイル等をインストールしてみる。

手順エントリー:Ruby on Rails 入門 (1日目) : あかぎメモ

$ brew install cmake
$ cd /tmp
$ curl -OL http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.29.tar.gz
$ tar zxvf mysql-5.5.38.tar.gz
$ cd mysql-5.5.38
$ cmake . \
    -DMYSQL_UNIX_ADDR=/Applications/MAMP/tmp/mysql/mysql.sock \
    -DCMAKE_INSTALL_PREFIX=/Applications/MAMP/Library
$ make -j 3
$ cp -v libmysql/*.dylib /Applications/MAMP/Library/lib
$ mkdir -p /Applications/MAMP/Library/include/mysql
$ cp -v include/*.h /Applications/MAMP/Library/include/mysql

.bash_profileの設定

インストール時に参照されるMySQL関連のパス等を.bash_profileに書いておく。

参考:

cpanmでDBD::mysqlを入れる – Qiita

DBD::mysql – Environment Variable

# export path for MAMP
export PATH="$PATH:/Applications/MAMP/Library/bin/"
export DBD_MYSQL_CFLAGS=-I/Applications/MAMP/Library/include/mysql
export DBD_MYSQL_LIBS="-L/Applications/MAMP/Library/bin/mysql -lmysqlclient"
export DBD_MYSQL_EMBEDDED=
export DBD_MYSQL_CONFIG=/Applications/MAMP/Library/bin/mysql_config
export DBD_MYSQL_NOCATCHSTDERR=0
export DBD_MYSQL_NOFOUNDROWS=0
export DBD_MYSQL_SSL=
export DBD_MYSQL_TESTDB=test
export DBD_MYSQL_TESTHOST=localhost
export DBD_MYSQL_TESTPORT=3306
export DBD_MYSQL_TESTUSER=root
export DBD_MYSQL_TESTPASSWORD=root

DBD::mysqlのインストール

cpanm DBD::mysqlcarton installでインストールできた。

※1 執筆時、MAMPの最新バージョンは3.7だったがMySQLのバージョンは5.5.38と同じものだった

Test::mysqld(Harriet)を使う場合

とりあえずcould not find mysql_install_dbというエラーが出るので、対処する。

上記手順を行うとmysql_install_db/Applications/MAMP/Library/scriptsにある。まずは実行権限を付ける。

$ chmod +x /Applications/MAMP/Library/scripts/mysql_install_db

PATHを通してもFATAL ERROR: Could not find ./bin/my_print_defaultsというエラーが出るのでシンボリックリンクを作る。

$ ln -s /Applications/MAMP/Library/scripts/mysql_install_db /Applications/MAMP/Library/bin/mysql_install_db

Filed under: perl,perlモジュール

Trackback Uri






2013年 9月 25

※何故か記載が全体的にORDER BY句になっていたので修正…

DBIx::SkinnyでGROUP BY句を使う

DBIx::SkinnyでGROUP BY句は使えないっぽい。マニュアルにも無い。Tengでは使えるみたいだけれど。resultsetでSQL組み立てれば出来るのかと思ったのだけれどどうも無理っぽい。

で、ググっていたらテストにそれらしい記述があるのを発見。ただし、DBIx::Skinny::Pager のテスト。
https://github.com/walf443/p5-dbix-skinny-pager/blob/master/t/02-functional.t

$rs->group({ column => ‘カラム名’ });

どうやら groupというメソッドがあるようだ。やっぱりマニュアルに載ってないけど。

作っているwebアプリはページング処理をするために丁度 DBIx::Skinny::Pager を使ってたのでこの方法で。

コード

  my $rs = $self->resultset_with_pager('MySQLFoundRows');
  $rs->select([qw/
        entry_id
        entry_title
      /]);
  $rs->from(['entry']);
  $rs->group({ column => 'category' });
  $rs->add_where( entry_status => 'public' );

構築されるSQL

SELECT SQL_CALC_FOUND_ROWS entry_id, entry_title
FROM entry
WHERE (entry_status = ?)
GROUP BY category

生SQL使えばいい問題なんだけどね 😛


Filed under: MySQL,perl,perlモジュール

Trackback Uri






2013年 5月 28

MySQL – SELECT … WHERE id IN (..) – correct order – Stack Overflow

という事で、MySQLでこんなSQLが使えるとの事。

SELECT * FROM table WHERE id IN (4,3,1) ORDER BY FIELD(id,4,3,1)

なので、PerlのORMであるDBIx::SkinnyでSQL組み立てられるのか実験してみる。

my @id_lists = (4,3,1);
$" = ",";  #"

my $rs = MyModel->resultset;
$rs->select([qw/*/]);
$rs->from(['entry']);
$rs->add_where('id' => { 'IN' => \@id_lists });
$rs->order({ 'column' => "FIELD(id, @id_lists)" });

warn $rs->as_sql;

----- 実行結果
SELECT *
FROM entry
WHERE (id IN (?,?,?))
ORDER BY FIELD(id, 4,3,1)

特殊変数 $” で 配列展開時の区切り文字を ,(カンマ) にしている。DBIx::Skinnyなんだから生のSQL使えばいい話だけど。かなり無理矢理だけど一応使えると言う事で。

参考

Filed under: MySQL,perlモジュール

Trackback Uri






2013年 3月 26

  • OSX Mountain Lion 10.8.3
  • groonga 3.0.1
  • MySQL 5.5.30
  • MAMP 2.1.4

groongaのインストール

groongaはMacportsでインストールする。

sudo port install groonga

groongaをインストールするとmysql55もインストールされるのでソースコードはこれを使う。…と、思ったら最近のmacportsはバイナリをダウンロードするらしい(Shibu’s Diary: MacPortsは生まれ変わった

MacPortsのバイナリダウンロードはビルドした時と違うファイルになる場合があるっぽい – kanonjiの日記 ココを読むとソースコードからインストール出来るオプションが有るみたい。

#一度アンインストールして...
$ sudo port uninstall mysql55 @5.5.30_1

# -s オプションを付けてソースからインストール
$ sudo port install -s mysql55

ソースのpathはこんな感じ
/opt/local/var/macports/distfiles/mysql55/mysql-5.5.30.tar.gz
なので、これをコピーして解凍する。

#無い場合はsrc ディレクトリを作って
$ mkdir ~/src
$ cd ~/src
#
$ sudo mv /opt/local/var/macports/distfiles/mysql55/mysql-5.5.30.tar.gz ~/src/mysql-5.5.30.tar.gz 
Password:
$ tar zxvf mysql-5.5.30.tar.gz

mroongaのインストール

packages.groonga.org から最新版のmroongaをダウンロードします。このエントリーを書いている時点の最新版は mroonga-3.01.tar.gz です。

ダウンロードして解凍します。

$ wget http://packages.groonga.org/source/mroonga/mroonga-3.01.tar.gz

tar zxvf mroonga-3.01.tar.gz

2. インストールガイド — mroonga v3.01 documentation を読むと、

groongaを/usr/libなど標準のパス以外にインストールした場合はPKG_CONFIG_PATHを指定する必要があります。例えば、ーーprefix=$HOME/localでgroongaをインストールした場合は以下のようにします。

とあります。

pkg-configのpathは

$ which pkg-config
/opt/local/bin/pkg-config

mysql_config のpathは

$ which mysql_config
/usr/local/bin/mysql_config

MySQLのソースのpathは先程解凍したものとなりますので、configureは以下のようになります。

$ cd mroonga-3.00
$ ./configure \
  PKG_CONFIG_PATH=/opt/local/bin/pkg-config \
  --with-mysql-source=$HOME/src/mysql-5.5.30 \
  --with-mysql-config=/usr/local/bin/mysql_config

その後 makeを実行します。

$ make
$ sudo make install

/opt/local/lib/mysql55/plugin/ 以下にmroongaがインストールされます。

後は公式ガイド通り

mysql> INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';

mysql> CREATE FUNCTION last_insert_grn_id RETURNS INTEGER soname 'ha_mroonga.so';

を実行します。

ちなみにいつの間にかMAMPのMySQLがバージョン5.5になっていたので、別途MySQLをインストールしなくてもmroongaが使えるのではないかと思い試してみたけど、make出来ないので諦めた。


Filed under: Mac,MySQL,インストールメモ

Trackback Uri






2012年 5月 30

MAMP

ApacheもMySQLも常時起動しておくのは微妙だし、でも使う時にはサクッと使いたい。そんな時にMAMPがあればローカルのApacheとMySQLを自動で起動してくれるから便利。phpMyAdminもついてるしね。
インストールメモはこっち

で、MAMPデフォルトのMySQLではなく、先日インストールしたmroonga対応のMySQLをMANPで使えるようにする。

MySQLのrootユーザーのパスワードを設定

MAMPのMySQLはデフォルトで ユーザーroot パスワードrootで設定されているので同じように設定する(方が簡単?)ローカルのMySQLだからroot:rootでもおkでしょう。

MacBook:~ clicktx$ sudo /opt/local/share/mysql55/support-files/mysql.server start
Password:
Starting MySQL
.. SUCCESS! 
MacBook:~ clicktx$ /opt/local/lib/mysql55/bin/mysql -uroot
mysql> SET PASSWORD FOR root@localhost=PASSWORD('root');
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye

で、MySQLサーバを停止。

MacBook:~ clicktx$ sudo /opt/local/share/mysql55/support-files/mysql.server stop
Shutting down MySQL
. SUCCESS! 

MAMPの起動スクリプトを編集

/Applications/MAMP/bin/ の中にあるMySQL起動スクリプトや停止スクリプト等を編集する。編集するファイルは

  • checkMysql.sh
  • repairMysql.sh
  • startMysql.sh
  • stop.sh

の4つ。オリジナルはコピーしておきましょう。中身はこんな感じ。

checkMysql.sh

# /bin/sh
#/Applications/MAMP/Library/bin/mysqlcheck --all-databases --check --check-upgrade -u root -proot --socket=/Applications/MAMP/tmp/mysql/mysql.sock
/opt/local/lib/mysql55/bin/mysqlcheck --all-databases --check --check-upgrade -u root -proot --socket=/Applications/MAMP/tmp/mysql/mysql.sock

repairMysql.sh

# /bin/sh
#/Applications/MAMP/Library/bin/mysqlcheck --all-databases --repair -u root -proot --socket=/Applications/MAMP/tmp/mysql/mysql.sock
/opt/local/lib/mysql55/bin/mysqlcheck --all-databases --repair -u root --socket=/Applications/MAMP/tmp/mysql/mysql.sock

startMysql.sh

# /bin/sh
#/Applications/MAMP/Library/bin/mysqld_safe --port=3306 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --lower_case_table_names=0 --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --log-error=/Applications/MAMP/logs/mysql_error_log &
/opt/local/lib/mysql55/bin/mysqld_safe --port=3306 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --lower_case_table_names=0 --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --log-error=/Applications/MAMP/logs/mysql_error_log &

stop.sh

# /bin/sh
#/Applications/MAMP/Library/bin/mysqladmin -u root -proot --socket=/Applications/MAMP/tmp/mysql/mysql.sock shutdown
/opt/local/lib/mysql55/bin/mysqladmin -u root --socket=/Applications/MAMP/tmp/mysql/mysql.sock shutdown

動作確認

普通にアイコンダブルクリックでMAMPを起動するだけ。
ブラウザが立ち上がって下のような画面が出ればおk。

MAMP起動画面

phpMyAdminタブからエンジンを見てみるとストレージエンジンにmroongaが見える。

mroongaストレージエンジンを確認

これでテーブル作ったりデータ入れたりがGUIで出来るね!


Filed under: MySQL,phpmyadmin,メモ,開発環境

Trackback Uri