• MySQL関連のWikiへのリンク
    • MySQL
    • MySQL 5.1
    • MySQL 5.4
    • MySQL/InnoDB
    • MySQL/エラー
    • MySQL/クラスタリング
    • MySQL/サーバ移動
    • MySQL/チューニング
    • MySQL/バージョン
    • MySQL/バックアップ
    • MySQL/プロファイリング
    • MySQL/ベンチマーク
    • MySQL/レプリケーション
    • MySQL/ロック
    • MySQL/制限

MySQL

ライセンス

今後

  • v6.0
    • 2009年Q3にベータ版?
    • 2010年Q4にGA版?

インストール

  • CLAGS
  • configure で「configure: error: No curses/termcap library found」のエラーが出る場合
    • libtermcap-devel のパッケージをインストール

Tips

バッチ実行時にMySQLの処理時間を表示

"-t -vvv" のオプションを付ければ良い

文字コードの自動変換を回避するオプション

http://d.hatena.ne.jp/secondlife/20051031/1130724806 よりコピー

http://www.mysql.gr.jp/mysqlml/mysql/msg/9530 で話題になっていたように、 ver. 4.1以降、クライアント/サーバー間でキャラクターセットが自動的に 変換されるようになったことに伴い、多くの方が文字化けといった問題に 悩まされていたかと思います。

この点については開発側に改善を要求してきましたが、4.1.15にて "--skip-character-set-client-handshake" というオプションが導入されました。 http://dev.mysql.com/doc/refman/4.1/en/news-4-1-15.html このオプションを指定することにより、クライアントのキャラクターセットが サーバー側のキャラクターセットに合わせて自動的に設定され、 自動変換が発生しないようになります。特にver. 4.0から移行する際に、 このオプションの利用を徹底すれば、多くのトラブルが回避できるのでは ないでしょうか。

http://www.mysql.gr.jp/mysqlml/mysql/msg/12307

MySQL(v4.1以上)-PHPの文字化け対策

MySQL-PHPの関係図(v4.1以降)

MySQL-PHP.jpg

UTF-8 で動かすために加えた MySQL の設定

[mysqld]
default-character-set = utf8
init-connect="SET NAMES utf8"
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8

init-connect はなかなか優秀なオプション。DBI やら PHP やら latin1 でビルドされてるバイナリがたくさんあって手に負えないのは周知の通りだけど、このオプションを付けておくと、クライアントが何であっても接続時に “SET NAMES utf8″ を勝手に実行してくれる。

これをやってもPHPアプリで文字化けする場合は、php.iniを以下のように変更

mbstring.internal_encoding = UTF-8
mbstring.http_output = UTF-8

予約語

DDALLALTERANALYZEANDAS
ASCBEFOREBETWEENBIGINTBINARYBLOB
BOTHBYCASCADECASECHANGECHAR
CHARACTERCHECKCOLLATECOLUMNCOLUMNSCONSTRAINT
CONVERTCREATECROSSCURRENT_DATECURRENT_TIMECURRENT_TIMESTAMP
CURRENT_USERDATABASEDATABASESDAY_HOURDAY_MICROSECONDDAY_MINUTE
DAY_SECONDDECDECIMALDEFAULTDELAYEDDELETE
DESCDESCRIBEDISTINCTDISTINCTROWDIVDOUBLE
DROPDUALELSEENCLOSEDESCAPEDEXISTS
EXPLAINFALSEFIELDSFLOATFLOAT4FLOAT8
FORFORCEFOREIGNFROMFULLTEXTGRANT
GROUPHAVINGHIGH_PRIORITYHOUR_MICROSECONDHOUR_MINUTEHOUR_SECOND
IFIGNOREININDEXINFILEINNER
INSERTINTINT1INT2INT3INT4
INT8INTEGERINTERVALINTOISJOIN
KEYKEYSKILLLEADINGLEFTLIKE
LIMITLINESLOADLOCALTIMELOCALTIMESTAMPLOCK
LONGLONGBLOBLONGTEXTLOW_PRIORITYMATCHMEDIUMBLOB
MEDIUMINTMEDIUMTEXTMIDDLEINTMINUTE_MICROSECONDMINUTE_SECONDMOD
NATURALNOTNO_WRITE_TO_BINLOGNULLNUMERICON
OPTIMIZEOPTIONOPTIONALLYORORDEROUTER
OUTFILEPRECISIONPRIMARYPRIVILEGESPROCEDUREPURGE
RAID0READREALREFERENCESREGEXPRENAME
REPLACEREQUIRERESTRICTREVOKERIGHTRLIKE
SECOND_MICROSECONDSELECTSEPARATORSETSHOWSMALLINT
SONAMESPATIALSQL_BIG_RESULTSQL_CALC_FOUND_ROWSSQL_SMALL_RESULTSSL
STARTINGSTRAIGHT_JOINTABLETABLESTERMINATEDTHEN
TINYBLOBTINYINTTINYTEXTTOTRAILINGTRUE
UNIONUNIQUEUNLOCKUNSIGNEDUPDATEUSAGE
USEUSINGUTC_DATEUTC_TIMEUTC_TIMESTAMPVALUES
VARBINARYVARCHARVARCHARACTERVARYINGWHENWHERE
WITHWRITEX509XORYEAR_MONTHZEROFILL

以下はMySQLでは使えるが、SQL-99 では使用を禁止されているので使わない方が良い。

ACTIONBITDATEENUMNOTEXTTIMETIMESTAMP

データベースの文字コード

show create database [データベース名]

これは 4.1 以降で使えるらしい。

入力補完

mysqlコマンドを--auto-rehashオプションをつけて起動する

$ mysql --auto-rehash

my.cnfの[mysql]セクションにauto-rehashと書いておく

select * form a"

までうって Tabを押すと

select * from account_mst

見たいに補完してくれます。

検索のTips

t1(c1, c2),idx_c1, idx_c2 select * from t1 where c1 = 'a' order by c2;

の場合、複合作って以下が早い。 select * from t1 where c1 = 'a' order by c1,c2;

その他

Tools

バックアップツール

管理ツール

分析ツール

日本語全文検索

その他

有用なサイト

その他リンク集


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-10-27 (火) 13:24:34 (35d)