Cloud Nine

Avatar

About IT things and others.

5月
16
MacのRails3とMysqlの環境で出たエラー対処のメモ
5月 16, 2011 0

最近MacでRailsの環境を行っているのですが、Rails3にアップデート( たしかMacPortでアップデートしたような)
して、Mysqlで開発を行おうとしたらエラーがでたので、そのメモを書いておきます。

下記のようなコマンドでプロジェクト?を生成して、さっそく走らしてみる下記のエラー

$ rails new hoge -d mysql
$ cd /hoge/
$ rails s
dyld: lazy symbol binding failed: Symbol not found: _mysql_get_client_info
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/ext/mysql2/mysql2.bundle
  Expected in: flat namespace

dyld: Symbol not found: _mysql_get_client_info
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/ext/mysql2/mysql2.bundle
  Expected in: flat namespace

検索してみていろいろ試してみるが、どれもうまく行かず、最終的に下記のページの内容で解決

http://stackoverflow.com/questions/5894102/bundle-command-the-wrong-mysql2-gem-always-0-3-2

gemのmysqlのライブラリの上げて解決

$ sudo gem uninstall mysql2 -i /Library/Ruby/Gems/1.8
$ gem 'mysql2','0.2.7'
$ bundle install

3月
14
Timeout error occurred trying to start MySQL Daemonのエラー
3月 14, 2011 0

本日Mysqlにトラブルがありました、その際の復旧方法をメモしておきます。
さっそくサーバにログインして、確認してみるとMysqlのプロセスは確認できました。
Mysqlに接続を試みるものも接続できず。

とにかく、一度再起動を行ってみました。

#/etc/rc.d/init.d/mysqld restart
Stopping MySQL:                                            [  OK  ]
Timeout error occurred trying to start MySQL Daemon.
Starting MySQL:                                            [FAILED]

停止はできるが起動ができませんでした。

解決方法

こういう時は、かならずログにヒントが隠されているのでさっそくログを確認する。
ログの場所はこちら:/var/log/mysqld.log
やはりログに答えは書いてありました、mysqlslow.log に問題ありとのこと。
このログファイルは、SQLの実行が5秒以上かかった場合に残すようにように設定していたログです。

# tail /var/log/mysqld.log
110312 17:01:13 [ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28)
110312 17:01:13 [ERROR] Can't start server: can't create PID file: No space left on device
Number of processes running now: 0
110312 17:01:13  mysqld restarted
/usr/libexec/mysqld: Error writing file '/var/log/mysqlslow.log' (Errcode: 28)
110312 17:01:13 [ERROR] Could not use /var/log/mysqlslow.log for logging (error 28). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.

さっそくmysqlslow.logを調査してみる。
mysqlslow.logのサイズが4GB以上になっている。。。。。
とりあえず、ファイルを退避させる。
その後Mysqlの起動を試みる。

# /etc/rc.d/init.d/mysqld start
Starting MySQL:                                            [  OK  ]

見事に起動。

課題

上記の対応で、サービスは稼動しましたが、いろいろと課題あります。

  • 1.ログファイルにローテションを組むようにしとけ!!
  • 2.Nagiosで監視してるけど、今回の現象はプロセスは生きているので発見できず、、、監視体制の見直し
  • 3.SQLが5秒以上もかかっているプログラムを潰さないと。。。
    恐らく、ログは一時期サーバに高負荷に陥ったときに増産されたと思うんんですが、でも対策しないと

3月
09
CakephpでMysqlで取得したデータのみだけ文字化け
3月 9, 2010 1

CakephpでMysqlで取得したデータのみだけ文字化けの現象がおきましたので、その時の解決法をメモしておきます。

解決法

/app/config/database.phpに文字コードを指定

	var $default = array(
		'driver' => 'mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'user',
		'password' => 'pass',
                'encoding' => 'utf8' , ← 文字コードを指定
		'database' => 'dbname',
		'prefix' => '',
	);

上記の設定で解決できました。

2月
23
Mysqlの大文字と小文字の区別
2月 23, 2010 0

CakephpでWindowsのローカル環境で開発して、Linuxのサーバに公開したときにひかかったので記載しておきます。
Windowsなど、一部のOSはMysqlは、テーブル名など名前の大文字・小文字は区別しないようです。
Linuxの環境下では、大文字・小文字の区別はするのでCakephpでエラーがでた次第です。
(³ɤ…)

8月
11
MySQL のER図作成方法
8月 11, 2009 0

SQL Mk-2のインストール

SQL Mk-2を選択した理由は、日本語に対応していること、開発が頻繁に行われていることを理由に選択しました。
ほかにも「DBDesigner」なども試そうかと思いましたが、時間もあまりなかったので、諦めました。
上記のリンクから、ダウンロードしてきて、インストールします。

MySQL ODBCのインストール

MYSQLで接続する場合は、ODBCから接続しないといけないようなので、「MySQL ODBC」をインストールしました。

http://dev.mysql.com/downloads/connector/odbc/3.51.html#win32

上記のURLからダウンロードしてきて、インストールします。

SQL Mk-2のMYSQLの接続方法の詳細はこちらのURLにあります。

http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/tips/mysql_connect/

動作画面
mysql-er

9月
04
開発方法について
9月 4, 2008 0

今開発中のシステムの開発方法を明記しておきます。
PHPで開発しております。

フレームワーク
symfony まだまだ使いこなせていない
テンプレートエンジン
Smarty
ドキュメント、まだまだ知らないことがたくさんあります。
データベースのコネクション
PDO
はじめはやっかいだったが、今はないともう離れられない。
テスト
PHPUnit
まだ開発途中なので、これから検証してみる感じです。
OS
CentOS 5 final
データベース
MySQL 5.0.45
phpMyAdminとかで管理してるけど、あんまりセキュリティ上あんまりよくないとかで使ってない人が多いのを最近よく聞く。
エディタ
Emacs 22.1
Meadowは重いのがなぁ。。。早くなる方法ないのかな

8月
19
CentOSにphpMyAdminのインストール
8月 19, 2008 0

phpMyAdminを落としてきます・

wget http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-2.11.8.1-all-languages.tar.gz

ファイルの移動

mv phpMyAdmin-2.11.8.1-all-languages.tar.gz /home/document/www/

解凍します。

xf phpMyAdmin-2.11.5.1-all-languages.tar.gz

わかりやすい名前にリネーム

mv ./phpMyAdmin-2.11.8.1-all-languages /phpMyAdmin

php-mysqlが入っていなければインストール

[root@localhost ~]# yum install php php-mysql

設定ファイルのコピー

[root@localhost ~]# cp /home/document/www/phpMyAdmin/config.sample.inc.php /home/document/www/config.inc.php

パーミッションの変更

[root@localhost ~]# chmod 660 /home/document/www/phpMyAdmin/config.inc.php

config.inc.phpを変更

[root@localhost ~]# vi  /home/document/www/phpMyAdmin/config.inc.php
$cfg['blowfish_secret']   = '';パスワードを追加

$cfg['Lang']     = 'ja-utf-8';日本語のために追加

php-mbstringとphp-mcryptのインストール
これをインストールしておかないと警告がでるので

mbstring
文字のエンコーディングなどに使用します。

警告内容
「PHP の mbstring 拡張が見つかりませんでした。マルチバイト文字セットを使用しているようですが、mbstring拡張がないと
 phpMyAdmin は文字列を正しく分割できないため予期しない結果になることがあります」

[root@localhost ~]# yum -y install php-mbstring

mcrypt
暗号の処理に使用します。

警告内容
mcrypt 拡張をロードできません。PHP の設定を確認してください」

[root@localhost ~]# yum -y install php-mcrypt

上記の内容で、phpMyAdminの設置が完了

8月
19
CentOSにMysqlをインストールのメモ
8月 19, 2008 1

CentOSにMysqlをインストール
yumでMysqlをインストール

[root@localhost ~]# yum -y install mysql-server

MySQL設定ファイル編集

[root@localhost ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
#aracter-set = utf8←コメントアウト+
default-character-set=utf8←追加

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

default-character-set=utf8←追加

Mysqlを立ち上げてみる

[root@localhost ~]# /etc/rc.d/init.d/mysqld start
Timeout error occurred trying to start MySQL Daemon.
MySQL を起動中:                             [失敗]

失敗したので原因をさぐるためログを確認

[root@localhost ~]# vi /var/log/mysqld.log
InnoDB: Apply batch completed
080819 18:05:21  InnoDB: Started; log sequence number 0 43655
080819 18:05:21 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
080819 18:05:21  mysqld ended

MySQL データを初期化し、システム テーブルを作成さしてみる

[root@localhost ~]# mysql_install_db

もう一度起動してみる

[root@localhost ~]# /etc/rc.d/init.d/mysqld start
Timeout error occurred trying to start MySQL Daemon.
MySQL を起動中:                             [失敗]

またまた失敗したのでログを確認
エラーが変わる。

[root@localhost ~]# vi /var/log/mysqld.log
080819 18:25:48 [ERROR] /usr/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
080819 18:25:48 [ERROR] /usr/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
080819 18:25:48 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)

調べると”/var/lib/mysql”のアクセス権が正しくないらしい
ぼくはすべてがrootユーザの権限になっていた。
mysqlに権限を与える

[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql

見事に機動・・・時間かかった。

[root@localhost ~]# /etc/rc.d/init.d/mysqld start
MySQL を起動中:                             [  OK  ]

Real Time Analytics