データベース



2020年 3月 20

とある事情でMAMPのバージョンを上げざるを得なく、その影響でDBD::mysqlがインストール出来なくなった。

mampな環境のmacにdbdmysqlをインストールの手順だとエラーが出る。(正確に言うと、/tmpが残っている間は成功する)

上記手順でbuildしたものを削除してからcarton installした時のログ

実行環境
macOS Catalina 10.15.3
MAMP 3.5.2
MySQL 5.5.42

Searching DBD::mysql on mirror index /Users/clicktx/***/***/***/local/cache/modules/02packages.details.txt ...
--> Working on DBD::mysql
Fetching http://cpan.metacpan.org/authors/id/D/DV/DVEEDEN/DBD-mysql-4.050.tar.gz
-> OK
Unpacking DBD-mysql-4.050.tar.gz
Copying DBD-mysql-4.050.tar.gz to /Users/clicktx/***/***/***/local/cache/authors/id/D/DV/DVEEDEN/DBD-mysql-4.050.tar.gz
Entering DBD-mysql-4.050
Checking configure dependencies from META.json
Checking if you have DBI 1.636 ... Yes (1.639)
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (6.98)
Checking if you have Data::Dumper 2.172 ... Yes (2.172)
Checking if you have Devel::CheckLib 1.09 ... Yes (1.14)
Configuring DBD-mysql-4.050
Running Makefile.PL
I will use the following settings for compiling and testing:

  cflags        (mysql_config) = -I/Applications/MAMP/Library/include/mysql -fno-omit-frame-pointer   -g -DNDEBUG
  embedded      (mysql_config) = 
  ldflags       (guessed     ) = 
  libs          (mysql_config) = -L/Applications/MAMP/Library/lib -lmysqlclient -lz
  mysql_config  (environment ) = /Applications/MAMP/Library/bin/mysql_config
  nocatchstderr (default     ) = 0
  nofoundrows   (default     ) = 0
  nossl         (default     ) = 0
  testdb        (environment ) = test
  testhost      (environment ) = localhost
  testpassword  (environment ) = root
  testport      (environment ) = 3306
  testsocket    (default     ) = 
  testuser      (environment ) = root

To change these settings, see 'perl Makefile.PL --help' and
'perldoc DBD::mysql::INSTALL'.

Checking if libs are available for compiling...
dyld: Library not loaded: /tmp/mysql-5.5.42/libmysql/libmysqlclient.18.dylib
  Referenced from: /Users/clicktx/.cpanm/work/1584659015.38984/DBD-mysql-4.050/assertlibBS_L2R_L
  Reason: image not found
wrong result: 'mysqlclient'
-> N/A

手順変更

/Applications/MAMP以下にbuildしたMySQLを残しておく手順に変更。

実行したcommand

$ mkdir -p /Applications/MAMP/Library/src
$ cd /Applications/MAMP/Library/src
$ wget http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.42.tar.gz
$ tar zxvf mysql-5.5.42.tar.gz
$ rm -f mysql-5.5.42.tar.gz
$ cd mysql-5.5.42
$ 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に追加するもの

# 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

Filed under: Mac,MySQL,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年 6月 2

### インストール
ビルドにそこそこ時間がかかる。6時間なんてエントリーもあったけどそんなにかからなかった。15-20分位?環境はMacBookPro Retina, 13-inch, Early 2013。他のエントリーでは依存問題が…的なのがあったけど、特に問題がなかった。

$ sudo port install mongodb
Warning: port definitions are more than two weeks old, consider using selfupdate
--->  Cleaning bzip2
--->  Unable to uninstall bzip2 @1.0.6_0, the following ports depend on it:
--->  	pcre @8.12_1
--->  	python27 @2.7.2_2
--->  	freetype @2.4.9_1
--->  	php5 @5.3.10_0+apache2
Warning: Uninstall forced.  Proceeding despite dependencies.
--->  Deactivating bzip2 @1.0.6_0
--->  Unable to deactivate bzip2 @1.0.6_0, the following ports depend on it:
--->  	pcre @8.12_1
--->  	python27 @2.7.2_2
--->  	freetype @2.4.9_1
--->  	php5 @5.3.10_0+apache2
Warning: Deactivate forced.  Proceeding despite dependencies.
--->  Cleaning bzip2
--->  Uninstalling bzip2 @1.0.6_0
--->  Cleaning bzip2
--->  Fetching archive for bzip2
--->  Attempting to fetch bzip2-1.0.6_0.darwin_12.x86_64.tbz2 from http://packages.macports.org/bzip2
--->  Attempting to fetch bzip2-1.0.6_0.darwin_12.x86_64.tbz2.rmd160 from http://packages.macports.org/bzip2
--->  Installing bzip2 @1.0.6_0
--->  Activating bzip2 @1.0.6_0
--->  Cleaning bzip2
--->  Computing dependencies for libedit
--->  Fetching archive for libedit
--->  Attempting to fetch libedit-20121213-3.0_0.darwin_12.x86_64.tbz2 from http://packages.macports.org/libedit
--->  Attempting to fetch libedit-20121213-3.0_0.darwin_12.x86_64.tbz2.rmd160 from http://packages.macports.org/libedit
--->  Installing libedit @20121213-3.0_0
--->  Cleaning libedit
--->  Computing dependencies for libedit
--->  Deactivating libedit @20110802-3.0_0
--->  Cleaning libedit
--->  Activating libedit @20121213-3.0_0
--->  Cleaning libedit
--->  Computing dependencies for pcre
--->  Fetching archive for pcre
--->  Attempting to fetch pcre-8.32_1.darwin_12.x86_64.tbz2 from http://packages.macports.org/pcre
--->  Attempting to fetch pcre-8.32_1.darwin_12.x86_64.tbz2.rmd160 from http://packages.macports.org/pcre
--->  Installing pcre @8.32_1
--->  Cleaning pcre
--->  Computing dependencies for pcre
--->  Deactivating pcre @8.12_1
--->  Cleaning pcre
--->  Activating pcre @8.32_1
--->  Cleaning pcre
--->  Computing dependencies for mongodb
--->  Dependencies to be installed: libpcap scons snappy v8
--->  Fetching archive for libpcap
--->  Attempting to fetch libpcap-1.3.0_0.darwin_12.x86_64.tbz2 from http://packages.macports.org/libpcap
--->  Attempting to fetch libpcap-1.3.0_0.darwin_12.x86_64.tbz2.rmd160 from http://packages.macports.org/libpcap
--->  Installing libpcap @1.3.0_0
--->  Activating libpcap @1.3.0_0
--->  Cleaning libpcap
--->  Fetching archive for scons
--->  Attempting to fetch scons-2.2.0_0.darwin_12.noarch.tbz2 from http://packages.macports.org/scons
--->  Attempting to fetch scons-2.2.0_0.darwin_12.noarch.tbz2.rmd160 from http://packages.macports.org/scons
--->  Installing scons @2.2.0_0
--->  Activating scons @2.2.0_0
--->  Cleaning scons
--->  Fetching archive for snappy
--->  Attempting to fetch snappy-1.0.5_0.darwin_12.x86_64.tbz2 from http://packages.macports.org/snappy
--->  Attempting to fetch snappy-1.0.5_0.darwin_12.x86_64.tbz2.rmd160 from http://packages.macports.org/snappy
--->  Installing snappy @1.0.5_0
--->  Activating snappy @1.0.5_0
--->  Cleaning snappy
--->  Fetching archive for v8
--->  Attempting to fetch v8-3.17.15_0.darwin_12.x86_64.tbz2 from http://packages.macports.org/v8
--->  Attempting to fetch v8-3.17.15_0.darwin_12.x86_64.tbz2.rmd160 from http://packages.macports.org/v8
--->  Installing v8 @3.17.15_0
--->  Activating v8 @3.17.15_0
--->  Cleaning v8
--->  Fetching archive for mongodb
--->  Attempting to fetch mongodb-2.4.1_0.darwin_12.x86_64.tbz2 from http://packages.macports.org/mongodb
--->  Attempting to fetch mongodb-2.4.1_0.darwin_12.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/mongodb
--->  Attempting to fetch mongodb-2.4.1_0.darwin_12.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/mongodb
--->  Fetching distfiles for mongodb
--->  Attempting to fetch mongodb-src-r2.4.1.tar.gz from http://distfiles.macports.org/mongodb
--->  Verifying checksum(s) for mongodb
--->  Extracting mongodb
--->  Applying patches to mongodb
--->  Configuring mongodb
--->  Building mongodb
--->  Staging mongodb into destroot
--->  Creating launchd control script
###########################################################
# A startup item has been generated that will aid in
# starting mongodb with launchd. It is disabled
# by default. Execute the following command to start it,
# and to cause it to launch at startup:
#
# sudo port load mongodb
###########################################################
--->  Installing mongodb @2.4.1_0
--->  Activating mongodb @2.4.1_0
--->  Cleaning mongodb
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 100.0%
--->  Found 137 broken file(s), matching files to ports
--->  Found 3 broken port(s), determining rebuild order
--->  Rebuilding in order
     apache2 @2.2.22 +preforkmpm
     git-core @1.7.7.2 +doc+pcre+python27
     php5 @5.3.10 +apache2
--->  Computing dependencies for apache2
--->  Fetching archive for apache2
--->  Attempting to fetch apache2-2.2.24_0+preforkmpm.darwin_12.x86_64.tbz2 from http://packages.macports.org/apache2
--->  Attempting to fetch apache2-2.2.24_0+preforkmpm.darwin_12.x86_64.tbz2.rmd160 from http://packages.macports.org/apache2
--->  Installing apache2 @2.2.24_0+preforkmpm
--->  Cleaning apache2
--->  Computing dependencies for apache2
--->  Deactivating apache2 @2.2.22_1+preforkmpm
--->  Cleaning apache2
--->  Activating apache2 @2.2.24_0+preforkmpm
--->  Cleaning apache2
--->  Computing dependencies for git-core
--->  Dependencies to be installed: p5.12-term-readkey
--->  Fetching archive for p5.12-term-readkey
--->  Attempting to fetch p5.12-term-readkey-2.300.0_3.darwin_12.x86_64.tbz2 from http://packages.macports.org/p5.12-term-readkey
--->  Attempting to fetch p5.12-term-readkey-2.300.0_3.darwin_12.x86_64.tbz2.rmd160 from http://packages.macports.org/p5.12-term-readkey
--->  Installing p5.12-term-readkey @2.300.0_3
--->  Activating p5.12-term-readkey @2.300.0_3
--->  Cleaning p5.12-term-readkey
--->  Fetching archive for git-core
--->  Attempting to fetch git-core-1.8.2.1_0+credential_osxkeychain+doc+pcre+python27.darwin_12.x86_64.tbz2 from http://packages.macports.org/git-core
--->  Attempting to fetch git-core-1.8.2.1_0+credential_osxkeychain+doc+pcre+python27.darwin_12.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/git-core
--->  Attempting to fetch git-core-1.8.2.1_0+credential_osxkeychain+doc+pcre+python27.darwin_12.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/git-core
--->  Fetching distfiles for git-core
--->  Attempting to fetch git-1.8.2.1.tar.gz from http://git-core.googlecode.com/files/
--->  Attempting to fetch git-manpages-1.8.2.1.tar.gz from http://git-core.googlecode.com/files/
--->  Attempting to fetch git-htmldocs-1.8.2.1.tar.gz from http://git-core.googlecode.com/files/
--->  Verifying checksum(s) for git-core
--->  Extracting git-core
--->  Applying patches to git-core
--->  Configuring git-core
--->  Building git-core
--->  Staging git-core into destroot
--->  Installing git-core @1.8.2.1_0+credential_osxkeychain+doc+pcre+python27
--->  Cleaning git-core
--->  Computing dependencies for git-core
--->  Deactivating git-core @1.7.7.2_0+doc+pcre+python27
--->  Cleaning git-core
--->  Activating git-core @1.8.2.1_0+credential_osxkeychain+doc+pcre+python27
--->  Cleaning git-core
--->  Computing dependencies for php5
--->  Fetching archive for php5
--->  Attempting to fetch php5-5.3.23_0+apache2.darwin_12.x86_64.tbz2 from http://packages.macports.org/php5
--->  Attempting to fetch php5-5.3.23_0+apache2.darwin_12.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/php5
--->  Attempting to fetch php5-5.3.23_0+apache2.darwin_12.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/php5
--->  Fetching distfiles for php5
--->  Attempting to fetch php-5.3.23.tar.bz2 from http://jp.php.net/get/php-5.3.23.tar.bz2/from/this/mirror?dummy=
--->  Verifying checksum(s) for php5
--->  Extracting php5
--->  Applying patches to php5
--->  Configuring php5
Error: org.macports.configure for port php5 returned: configure failure: command execution failed
Please see the log file for port php5 for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_php5/php5/main.log
Error: Unable to upgrade port: 1
Error rebuilding php5
    while executing
"error "Error rebuilding $portname""
    (procedure "revupgrade_scanandrebuild" line 382)
    invoked from within
"revupgrade_scanandrebuild broken_port_counts $opts"
    (procedure "macports::revupgrade" line 5)
    invoked from within
"macports::revupgrade $opts"
    (procedure "action_revupgrade" line 2)
    invoked from within
"action_revupgrade $action $portlist $opts"
    (procedure "action_target" line 94)
    invoked from within
"$action_proc $action $portlist [array get global_options]"
    (procedure "process_cmd" line 95)
    invoked from within
"process_cmd $remaining_args"
    invoked from within
"if { [llength $remaining_args] > 0 } {

    # If there are remaining arguments, process those as a command
    set exit_status [process_cmd $remaining..."
    (file "/opt/local/bin/port" line 4785)
$ sudo port load mongodb

で起動時にデーモンが立ち上がるようになるみたい。

### mongodbデーモン起動

mongod でデーモン起動。

$ mongod
mongod --help for help and startup options
Sun Jun  2 09:11:40.248 [initandlisten] MongoDB starting : pid=28245 port=27017 dbpath=/data/db/ 64-bit host=clicktx-MBP.local
Sun Jun  2 09:11:40.248 [initandlisten] 
Sun Jun  2 09:11:40.248 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
Sun Jun  2 09:11:40.249 [initandlisten] db version v2.4.1
Sun Jun  2 09:11:40.249 [initandlisten] git version: nogitversion
Sun Jun  2 09:11:40.249 [initandlisten] build info: Darwin clicktx-MBP.local 12.3.0 Darwin Kernel Version 12.3.0: Sun Jan  6 22:37:10 PST 2013; root:xnu-2050.22.13~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
Sun Jun  2 09:11:40.249 [initandlisten] allocator: tcmalloc
Sun Jun  2 09:11:40.249 [initandlisten] options: {}
Sun Jun  2 09:11:40.249 [initandlisten] exception in initAndListen: 10296 
*********************************************************************
 ERROR: dbpath (/data/db/) does not exist.
 Create this directory or give existing directory in --dbpath.
 See http://dochub.mongodb.org/core/startingandstoppingmongo
*********************************************************************
, terminating
Sun Jun  2 09:11:40.249 dbexit: 
Sun Jun  2 09:11:40.249 [initandlisten] shutdown: going to close listening sockets...
Sun Jun  2 09:11:40.249 [initandlisten] shutdown: going to flush diaglog...
Sun Jun  2 09:11:40.249 [initandlisten] shutdown: going to close sockets...
Sun Jun  2 09:11:40.249 [initandlisten] shutdown: waiting for fs preallocator...
Sun Jun  2 09:11:40.249 [initandlisten] shutdown: lock for final commit...
Sun Jun  2 09:11:40.249 [initandlisten] shutdown: final commit...
Sun Jun  2 09:11:40.249 [initandlisten] shutdown: closing all files...
Sun Jun  2 09:11:40.249 [initandlisten] closeAllFiles() finished
Sun Jun  2 09:11:40.249 dbexit: really exiting now

データベースのディレクトリがないみたい。

### mongodbシェルを使う

$ mongo
MongoDB shell version: 2.4.1
connecting to: test
> 

tabでコマンドの補完やカーソルキーで履歴の表示など出来る。

### チュートリアルを試してみる

[MongoDBの薄い本(The Little MongoDB Book) – cuspy diary](http://www.cuspy.org/diary/2012-04-17)


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

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