カテゴリー : MySQL

[MySQL] my.cnf の設定方法 (Mac + Homebrew 編)

Mac に Homebrew でインストールした MySQL の my.cnf を設定する方法をご紹介します。

MySQL

続きを読む

MySQL の文字コードを UTF8 に変更する

MySQL 5.7 で文字コードを UTF8 に変更する手順をご紹介します。

MySQL

続きを読む

[MySQL] database と table の size を確認する

MySQL で database と table の size を確認する SQL をご紹介します。

MySQL

続きを読む

[MySQL] 予約語でハマる – ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘xxx’ at line 1

MySQL でどう見ても大丈夫そうな SQL を実行したら文法エラーが発生しました。

MySQL

ERROR 1064 (42000): You have an error in your SQL syntax;

mysql> SELECT * FROM addresses ORDER BY primary;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'primary' at line 1

続きを読む

[Mac] MySQL を Homebrew でインストール

Mac に MySQL を Homebrew でインストールしたので、その手順をご紹介します。(最終更新日:2017/03/25)

MySQL

Homebrew のインストールがまだの方はこちらの記事をご参考にして下さい。

続きを読む

[MySQL] CMake Error: Internal CMake error, TryCompile configure of cmake failed

CentOS 6.3 に MySQL をソースコードからインストールするときに cmake エラーが発生したときの解決方法をご紹介します。

MySQL

CMake エラーメッセージ

CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Performing Test HAVE_PEERCRED - Failed
Warning: Bison executable not found in PATH
-- Configuring incomplete, errors occurred!

続きを読む

[MySQL] SQLSTATE[HY000]: General error: 1030 Got error 28 from storage engine

PHP(symfony1.4) + Apache2 + MySQL で動かしているWebサービスのデータ更新作業をしたら、下記のようなエラーが発生しました。

500 | Internal Server Error | Doctrine_Connection_Mysql_Exception
SQLSTATE[HY000]: General error: 1030 Got error 28 from storage engine

Error 28 は、MySQLのための充分なディスク容量の空きスペースがないため発生したようでした。

df コマンドでディスク使用量を確認してみると、見事に 100% 使ってました。

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                      9.1G  8.9G     0 100% /
/dev/xvda1             99M   21M   73M  23% /boot
tmpfs                 129M     0  129M   0% /dev/shm

ファイルサイズの大きいログファイルや、不要なファイルを削除することで解決しました。

SQLSTATE[HY000]: General error: 1030 Got error 28 from storage engine”;

Error 28 occurs when there is not enough disk space left for MySQL install to run properly. Then you start receiving error 28 messages.

“Error 28” often occurs on

・Filesystem full. Hard drive full.
・Host oversold their shared hosting.
・Host misconfigured their shared MySQL install.

To fix this you must increase the space of your filesystem or make room by deleting files. In other words your hard drive is full and MySQL needs more space.

・引用元:Magento – Help! SQLSTATE[HY000]: General error: 1030 Got error 28 from storage engine – HTML, XHTML, CSS, Design Questions – eCommerce Software for Growth はてなブックマーク - Magento - Help! SQLSTATE[HY000]: General error: 1030 Got error 28 from storage engine - HTML, XHTML, CSS, Design Questions - eCommerce Software for Growth

以上です。

【参考】

ServerTune KnowledgeTune / SQLSTATE[HY000]: General error: 1030 Got error 28 from storage engine はてなブックマーク - ServerTune KnowledgeTune / SQLSTATE[HY000]: General error: 1030 Got error 28 from storage engine

[MySQL] File ‘./mysql-bin.index’ not found (Errcode: 13)

MySQLをソースコードからインストールして、初期化をして、起動したらエラーが発生しました。

解決方法を調べたのでメモ。

ちなみに、MySQLをソースコードからインストールする手順はこちらから。

[DB] CentOS に MySQL をソースコードからインストール | CodeNote.net はてなブックマーク - [DB] CentOS に MySQL をソースコードからインストール | CodeNote.net
 

■ エラー内容

MySQLを起動するとエラーが発生しました。

# service mysql start
Starting MySQL.The server quit without updating PID file (/[失敗]cal/mysql/data/bms.pid).

詳しくエラー内容を見るために、直接Pathを指定して実行してみる。

# /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
111102 16:31:21 [ERROR] Aborting
 
111102 16:31:21 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

mysql-bin.indexというファイルがないみたいで、実際に存在しませんでした。

原因は、/usr/local/mysql 以下の全てのディレクトリの権限が root になっていたせいでした。

mysql_install_db でMySQLの初期化を実行する前に、chown でディレクトリの権限を root から mysql に変更する必要があります。

ディレクトリの権限を mysql ユーザに変更して、

chown -R mysql:mysql /usr/local/mysql/

MySQLの初期化をすればOKです。

/usr/local/mysql/scripts/mysql_install_db \
		--user=mysql \
		--basedir=/usr/local/mysql \
		--datadir=/usr/local/mysql/data

以上です。

【参考】

【MySQL】エラー対処方法 – ぱそ子のめも はてなブックマーク - 【MySQL】エラー対処方法 - ぱそ子のめも

まったり東京+ mysqld: File ‘./mysql-bin.index’ not found (Errcode: 13) はてなブックマーク - まったり東京+ mysqld: File './mysql-bin.index' not found (Errcode: 13)

:: MySQL 5.018 インストール | サラリーマンブログ :: はてなブックマーク - :: MySQL 5.018 インストール | サラリーマンブログ ::

ubuntu9.04 で mysql 5.1.33 のインストール – kameidの備忘録 – Sharpen the Saw! はてなブックマーク - ubuntu9.04 で mysql 5.1.33 のインストール - kameidの備忘録 - Sharpen the Saw!

MySQL5.5 を CentOS6.3 にソースコードからインストールする手順

CentOS に MySQL をソースコードからインストールする手順をご紹介します。(2012/11/08 修正)

公式ドキュメント(英語)にインストール手順は書いてあります。

MySQL :: MySQL 5.5 Reference Manual :: 2.10.2 Installing MySQL from a Standard Source Distribution


前提

CentOS5.7 64bit
MySQL5.5.17

MySQLのグループとユーザーの作成

まず、rootになります。

$ su

MySQLをデーモンで起動するためのグループとユーザーを作成します。

# groupadd mysql
# useradd -g mysql -d /usr/local/mysql mysql
# passwd mysql

MySQLのソースコードをダウンロード・展開

# cd /usr/local/src
# wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.17.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
# tar zxvf mysql-5.5.17.tar.gz
# cd mysql-5.5.17

cmakeでソースコードをビルド

ソースコードをビルドするために、ディレクトリ内に configure を探しても見つからなかったので調べてみたら、MySQL 5.5系よりcmake推奨となりconfigureがなくなったようです。

代わりに cmake でコンパイルするみたいです。

CentOS yum dag リポジトリの追加方法 | Linux LABS

MySQL 5.5.9 インストール Linux cmake | Linux LABS

cmake が入っていない場合は yum でインストールしておきます。

# yum install -y cmake

次に、MySQL依存パッケージをyumで入れておきます。

# yum install -y ncurses-devel

入れてないでcmakeすると、以下のようなエラーが出るので注意です。

- Could NOT find Curses  (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:82 (MESSAGE):
  Curses library not found.  Please install appropriate package,
 
      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is li             bncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):

そのまま再度、cmake をしても、エラー表示を繰り返してしまうので、一旦MySQLのディレクトリを削除し再実行します。

# rm -fr /usr/local/src/mysql-5.5.17
# cd /usr/local/src
# tar zxvf mysql-5.5.17.tar.gz
# cd mysql-5.5.17

cmake する際のオプションは普通にインストールするときは2~3個ぐらいでいいみたいです。

cmake をデフォルトで実行したときに、何が入るかだけ確認しておきましょう。

MySQL :: Building MySQL from Source :: 3 MySQL Source-Configuration Options

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DWITH_EXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_PIC=1

cmake時に、オプションで -DDEFAULT_CHARSET=utf8 付けたら、-DDEFAULT_COLLATION= … も付けないとうまくいかないので注意が必要らしいです。

MySQL のインストール

make
make install

以上でインストール完了です。

MySQLの初期設定

まず、ディレクトリの所有者を変更します。

UNIXコマンド [chown]

chown -R mysql:mysql /usr/local/mysql

次に、データベースを初期化します。

/usr/local/mysql/scripts/mysql_install_db \
		--user=mysql \
		--basedir=/usr/local/mysql \
		--datadir=/usr/local/mysql/data

データベースを初期化せずに他の設定をすると、下記のようなエラーが出ます。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

自動起動も設定しておきます。

cp /usr/local/src/mysql-5.5.17/support-files/mysql.server /etc/init.d/mysql 
chmod +x /etc/init.d/mysql
chkconfig --add mysql

以下のコマンドを実行して状態を確認します。期待したランレベルでonになっていれば問題はありません。

# chkconfig --list | grep mysql
 
mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off

実行環境に合わせて、起動スクリプトを変更します。

vi /etc/init.d/mysql
 
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

設定ファイルをコピーします。設定ファイルは必要に応じて編集してください。

cp /usr/local/src/mysql-5.5.17/support-files/my-medium.cnf /etc/my.cnf

以上で完了です。

MySQLを service コマンドで起動して、ちゃんとインストールされているか確認します。

service mysql start

MySQLのPathを通す

# vi ~/.bashrc
 
PATH="$PATH":/usr/local/mysql/bin
# source ~/.bashrc
# mysql -V
mysql  Ver 14.14 Distrib 5.5.17, for Linux (x86_64) using  EditLine wrapper

以下のコマンドでログイン出来れば、インストール成功です。

mysql -u root

ついでに root のパスワードも変更しておきます。

mysql> set password for root@localhost=password('newpassword');
Query OK, 0 rows affected (0.02 sec)
 
mysql> \q
# mysql
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g. ……

これで、PASSの設定が完了しました。

初期設定は以上です。

MySQLの起動に失敗したときの対処方法

MySQLを起動時に以下のようなエラーが出ました。

Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid)

プロセスを見てみると既に起動しているみたいなのですが、mysql -u root でログイン出来ません。

少々荒いですが、killコマンドでプロセスを殺して、またMySQLを起動してやれば上手くいきました。以下、手順など。

# ps aux | grep mysql
mysql    32031  0.0  3.1 337520 32944 ?        Sl   00:28   0:00 /usr/local/mysql/bin/mysqld --localdomain.err --pid-file=/usr/local/mysql/data/localhost.localdomain.pid --socket=/tmp/mysql.
# kill 32031
# ps aux | grep mysql
# /etc/init.d/mysql start
Starting MySQL.......    [  OK  ]
# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.17-log Source distribution
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql>

参考情報

MySQL 5.5.8をcmakeでインストールする – pgmgontaの日記

MySQLのrootパスワード設定 - Gentoo Linuxで自宅サーバ

Mysql-5.5系のインストールメモ(Fedora14の64bitへcmakeにて) | パチスロ日記と仕事メモ

Sakila Sample Database (空色ブログ)

[Rails] ActiveRecord とDBの型の対応関係

Ruby on Rails にて、ActiveRecord とDBの型の対応関係を調べたのでメモ。

■ PostgreSQL

Ruby 1.9.2
Rails 3.0.10
PostgreSQL 9.0.4

$ rails console
Loading development environment (Rails 3.0.10)
ruby-1.9.2-p290 :001 > pp ActiveRecord::Base.connection.native_database_types
 => {
:primary_key=>"serial primary key", 
:string=>{:name=>"character varying", :limit=>255}, 
:text=>{:name=>"text"}, 
:integer=>{:name=>"integer"}, 
:float=>{:name=>"float"}, 
:decimal=>{:name=>"decimal"}, 
:datetime=>{:name=>"timestamp"}, 
:timestamp=>{:name=>"timestamp"}, 
:time=>{:name=>"time"}, 
:date=>{:name=>"date"}, 
:binary=>{:name=>"bytea"}, 
:boolean=>{:name=>"boolean"}, 
:xml=>{:name=>"xml"}}

■ MySQL

Ruby 1.9.2
Rails 3.0.1
MySQL 5.1.44

ruby-1.9.2-head > pp ActiveRecord::Base.connection.native_database_types
{
:primary_key=>"int(11) DEFAULT NULL auto_increment PRIMARY KEY", 
:string=>{:name=>"varchar", :limit=>255}, 
:text=>{:name=>"text"}, 
:integer=>{:name=>"int", :limit=>4}, 
:float=>{:name=>"float"}, 
:decimal=>{:name=>"decimal"}, 
:datetime=>{:name=>"datetime"}, 
:timestamp=>{:name=>"datetime"},
:time=>{:name=>"time"}, 
:date=>{:name=>"date"},
:binary=>{:name=>"blob"}, 
:boolean=>{:name=>"tinyint", :limit=>1}
}

参考情報

ActiveRecord と実際のDBの型の対応を確認する – @sugamasao.blog.title # => ”コードで世界を変えたい”