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

2016年4月27日水曜日

MySQLでError Code : 1548 Cannot load from mysql.proc. The table is probably corruptedとか出て困ったときの対処法

何かのきっかけ(システムの更新?)でMySQLがmysql.procからロードできない、なんか壊れてるよ、ってエラーが出た場合にした対処方法をメモ。

mysql_upgrade -u root -p

これをするとMySQLを治してくれた。

参考:

https://dev.mysql.com/doc/refman/5.1/en/upgrading-from-previous-series.html

http://blog.zwiegnet.com/linux-server/error-code-1548-cannot-load-from-mysql-proc-the-table-is-probably-corrupted/

http://serverfault.com/questions/361838/mysql-cannot-load-from-mysql-proc-the-table-is-probably-corrupted

MySQLのダンプとリストアのなかなかよくまとまってるページがあったのでメモ

MySQLのダンプとリストアのなかなかよくまとまってるページがあったのでメモ

http://xpaper.info/information-technology/mysql-backup-and-restore-commands-with-gzip-bzip2/#.Vx-mT6MrLdR

MySQLのビューでプライマリキーとなるカラムが無い場合、Hibernateのエンティティをどう書くのか?

MySQLのビューでプライマリキーとなる@IDが無い場合、つまり、複数のカラムでユニークキーとなる場合はそれぞれのカラムに@IDを指定する。

但し、これはJPAによると推奨されていないらしい。


http://stackoverflow.com/questions/4381290/hibernate-exception-org-hibernate-annotationexception-no-identifier-specified

2015年12月2日水曜日

MySQLでの実行コマンドの履歴を表示するには

MySQLのコマンドのログをチェックしたかったので調べたら、どうやらファイルが作成されているようだ。

cat ~/.mysql_history

http://stackoverflow.com/questions/7818031/sql-command-to-display-history-of-queries

2015年7月30日木曜日

MySQLのSelect文で特定の文字列の場所を見つけると同時に分割する関数

MySQLのSelect文で特定の文字列の場所を見つけると同時に分割する関数でsubstring_indexというのが便利だったのでメモ。indexofとsubstringの両方が合わさったもの。

substring_index("www.google.com",".","2)

1つ目と2つ目の引数は明らかなので割愛。3つ目の引数がポイント。

正の数:分割された文字列の何番目かを左からから指す
負の数:分割された文字列の何番目かを右からから指す


http://www.w3resource.com/mysql/string-functions/mysql-substring_index-function.php

2015年6月17日水曜日

MySQLについてくるautomysqlbackupの使い方

MySQLにはバックアップ専用にautomysqlbackupがついてくるので、ちょっと使い方についてメモ書き。


  1. sudo apt-get install automysqlbackup でインストール
  2. /var/lib/automysqlbackup にバックアップが毎日作られるが、スクリプト中で保存先は指定できる。
※ BACKUPDIRとDBNAMESぐらいかな、変更したのは。。




https://serverpilot.io/community/articles/how-to-back-up-mysql-databases-with-automysqlbackup.html

MySQL 5.1 をUbuntu 12.04にインストールする方法

MySQL5.1をUbuntu12.04にインストールしようと思ったら、apt-getでは5.5がインストールされてしまうので、ソースからMySQL5.1をインストールするのに以下を参考にした。

シェルスクリプトでもコマンドラインからでもOK。

#!/bin/bash

set -e

cd ~/
wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.65.tar.gz
tar -zxf mysql-5.1.65.tar.gz
cd mysql-5.1.65
./configure  '--prefix=/usr' '--exec-prefix=/usr' '--libexecdir=/usr/sbin' '--datadir=/usr/share' '--localstatedir=/var/lib/mysql' '--includedir=/usr/include' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-system-type=debian-linux-gnu' '--enable-shared' '--enable-static' '--enable-thread-safe-client' '--enable-assembler' '--enable-local-infile' '--with-fast-mutexes' '--with-big-tables' '--with-unix-socket-path=/var/run/mysqld/mysqld.sock' '--with-mysqld-user=mysql' '--with-libwrap' '--without-readline' '--with-ssl' '--without-docs' '--with-extra-charsets=all' '--with-plugins=max' '--with-embedded-server' '--with-embedded-privilege-control'
make
sudo make install


参考
http://askubuntu.com/questions/125686/failed-to-spawn-mysql-main-process-unable-to-execute-no-such-file-or-director

2015年5月15日金曜日

MySQL5.5をUbuntuから完全に消去する方法

MySQL5.5をUbuntuからアンインストールしたかったので、やり方を調べてみた。

sudo deluser mysql
sudo delgroup mysql
sudo service mysql stop  #or mysqld
sudo killall -9 mysql
sudo killall -9 mysqld
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo deluser mysql
sudo rm -rf /var/lib/mysql
sudo apt-get purge mysql-server-core-5.5
sudo apt-get purge mysql-client-core-5.5
参考
http://stackoverflow.com/questions/10853004/removing-mysql-5-5-completely
http://askubuntu.com/questions/125686/failed-to-spawn-mysql-main-process-unable-to-execute-no-such-file-or-director

mysqldumpでエラーを無視して実行する方法

mysqldumpでエラーを無視して実行する方法

-f, --force         Continue even if we get an sql-error.

参考
http://serverfault.com/questions/302151/how-do-i-ignore-errors-with-mysqldump

mysqldumpでダンプを圧縮して実行する方法

ダンプ
% mysqldump <mysqldump options> | gzip outputfile.sql.gz

リストア
% gunzip < outputfile.sql.gz | mysqldump <mysqldump options>


参考
http://www.ducea.com/2006/10/28/compressing-mysqldump-output/

2015年1月24日土曜日

MySQLで複数のクエリの結果を比較する方法

2つのテーブルの違いを知りたい場合など、MySQLで複数のクエリの結果を比較したい場合がある。そういう時はこれ。

SELECT id FROM tableA
WHERE id NOT IN (
    SELECT id FROM tableB
)

http://stackoverflow.com/questions/1569990/mysql-is-it-possible-to-get-the-difference-of-two-query-results

2015年1月13日火曜日

Hibernateで親エンティティの重複を無くすには?

SQLでJOINを使うと親エンティティが重複されてレコードが取得されてしまう場合がある。この場合、Hibernateで親エンティティの重複を無くして、ユニークなレコードを取得したい場合、Criteria#setResultTransformerを使う。


criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

http://learningviacode.blogspot.in/2013/06/why-need-for-resulttransformers.html

2014年10月3日金曜日

MySQLでデータのダンプとリストアをCSVファイルでやりとりする方法

MySQLでデータのダンプとリストアをCSVファイルでやりとりする方法を簡単にメモ。

ダンプ

SELECT * FROM tableA INTO OUTFILE "/tmp/dump.csv" FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"';

リストア

LOAD DATA INFILE "/tmp/dump.csv" INTO TABLE tableA FIELDS TERMINATED BY ',' ENCLOSED BY '"';

http://sasuke.main.jp/sqlcsv.html

注意した点として、Ubuntuなどではデフォルトで/tmp/ 以下からでしかCSVファイルを扱えなかったので、ダンプ・リストア時のエラーに注意。確かerrorno 13だった気が。。。

2014年7月11日金曜日

MySQLでテーブル作成でエラーが出た時の詳細ログチェックの方法

MySQLで例えばテーブルを作成する時に外部キー制約などが間違ってた場合、error no 150と言われてもさっぱり分からないので、以下のコマンドで詳細をチェック。

>SHOW ENGINE INNODB STATUS

外部キーであれば、テーブル名が存在しないなどと詳しいエラーを教えてくれる。

http://stackoverflow.com/questions/17812616/mysql-error-1005-cant-create-table-errno-150