mysql

MySQL(MariaDB)で既存のテーブルからCREATE文を作成する方法

既に存在するテーブルと同じスキーマのテーブルを作成したいときがある。 その場合、以下のコマンドを実行する。なお、当たり前であるが、既存のテーブルが存在するDB上から実行する。 SHOW CREATE TABLE テーブル名 例 mysql> SHOW CREATE TABLE sessions \…

Mysqlで50音検索(あ行で始まるレコードを検索する)

検索できるのに50音検索なんて必要なのか? という疑問を抱きつつも、やってみたら意外に面倒だったのでメモしておく。 あ行 SELECT * FROM table WHERE name REGEXP '^(あ|い|う|え|お|ア|イ|ウ|エ|オ)+'; 英数字 SELECT * FROM table WHERE name REGEXP '^…

InnoDBの破損とリカバリ方法

原因の確認 MySQLが起動しなくなった。"/var/log/mysql/error.log"を確認したら、DBが正常にシャットダウンしなかったために、InnoDBが壊れったっぽい。 141122 21:00:54 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. In…

カラムの文字コード変更

MySQLは、データベース、テーブル、カラムそれぞれに文字コードが設定可能。カラムに文字コードが指定してある場合、これを変更するには、下記コマンドを実行する。 ALTER TABLE t MODIFY col varchar(255) CHARACTER SET utf8; 変更されたかどうかは、下記…

OS X Marvericks

OS X Marvericksにアップグレードして一番困ったのは、MySQLとPostgreSQLが起動しなくなったこと。とりあえず、データだけでも何とかして取り出したい。 MySQLの場合 $ sudo /opt/local/bin/mysqld_safe5これで起動するはずなので、いつもどおり、mysqldump…

mysqldumpで一行ずつのINSERT文を吐き出したい

デフォルトだと複数行INSERTによって高速にINSERT可能なのだが、場合によっては一行一行INSERTさせたいときがある。 mysqldump -c --skip-extended-insert > dump.sql --extended-insert複数のVALUESリストを含む、複数行INSERT構文を使用してください。これ…

リモートのMySQLをGUIで管理する(MySQL Query Browser + SSHトンネリング編)

管理画面作るのめんどくさい。でもターミナルでSQLをいちいち書くのも面倒。でも、データベースを外部接続可能にするのは問題外というのは多いと思います。そんな時にphpMyAdminを使うのも手でしょうが、インストールするのも面倒だし、UIもあまり好きになれ…

「デフォルトのキャラクタセットおよび照合順序の指定」

本日は、MySQLのリファレンスマニュアル 9.3 の学習。「デフォルトのキャラクタセットおよび照合順序の指定」について。 サーバ、データベース、テーブル、カラムの 4 段階で、キャラクタセットと照合順序のデフォルト設定が用意されています。 MySQL :: MyS…

キャラクタセットと照合順序について

キャラクタセットとは、シンボルとエンコードのセットです。照合順序とは、キャラクタセット内の文字を比較するためのルールを集めたものです。 MySQL :: MySQL 5.1 リファレンスマニュアル :: 9.1 一般のキャラクタセットおよび照合順序 ‘A’ = 0、‘B’ = 1、…

MySQLで利用してはいけないカラム

・項目名に「key」と言う名前を指定すると MySQL ではエラーになる。見事にはまりましたorz

MySQL個人メモ

Import and Outport Data. SELECT * FROM INTO OUTFILE 'c:/home/example.txt' [FIELDS TERMINATED BY ','] FROM tables; LOAD DATA INFILE 'c:/home/example.txt' INTO TABLE tables [FIELDS TERMINATED BY ','];