&tag(MySQL);
*目次 [#ka7ae1d3]
#contents
*参考情報 [#x72b72ed]

-[[MySQL5.5]]
-[[./管理]]


*テーブル定義 [#e69ef6b0]
**UTF-8でchar(xxx) / varchar(xxx)は文字数(バイト数ではない) [#kaf44dcd]
-[[MySQLのvarchar(XX)は、文字数(MySQL4.1.20) - 肉とご飯と甘いもの @ sotarok:http://d.hatena.ne.jp/sotarok/20070821/1187707045]]が参考になる。
-ちなみにUTF-8は1文字3バイト(まれに4バイト)。[[漢(オトコ)のコンピュータ道: Real UTF-8 On MySQL 6.0:http://nippondanji.blogspot.com/2008/10/real-utf-8-on-mysql-60.html]]には5.Xでは3バイトUTF-8にしか対応してないと書かれてあるが、[[漢(オトコ)のコンピュータ道: MySQLコミュニティ騒然!MySQL 5.5.4が与えるインパクト。:http://nippondanji.blogspot.com/2010/04/mysqlmysql-554.html]]にて5.5では4バイトUTF-8に対応したらしい。

**AUTO INCREMENT [#w9969fd5]
[[Olen onnellinen. MySQL:AUTO_INCREMENTの挙動まとめ(InnoDB):http://hydra404.blog82.fc2.com/blog-entry-24.html]]が参考になる。
-INSERT時に値を指定した場合それが使われる。
-値が飛んだ場合そこから使われる。
-ALTER TABLE … AUTO INCREMENT = xxx のように変更する場合、現在の最大より上の値ならば変更できる。
-InnoDBの場合、再起動でAUTO INCREMENTがリセットされる。
*トラブルシューティング [#w315ac68]
** MySQLのTimestamp型は特殊 [#n197dac3]
-オプションを指定しないでTimestamp型の列を作ると、INSERT時に現在時刻を設定&UPDATE時に自動更新というかなり余計なことをしてくれる。Datetime型を使うのが無難っぽい。[[mysqlのtimestamp型 (90h memo):http://90h.dip.jp/archives/2005/04/mysqltimestamp.html]]
**ODBC [#o6c95b64]
***ODBC呼び出しが失敗する。 [#x1779d93]
--Access2007からMySQLのデータソースを呼び出そうとするとエラー。
#pre{{
ODBC--呼び出しが失敗しました。
[Microsoft][ODBC Driver Manager]指定された DSNには、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています。(#0)
}}
-Accessは64bit版ODBCドライバに対応してないらしいので、32bit版をインストールする。
-C:\Windows\SysWOW64\odbcad32.exeを使えという情報もあるがコントロールパネルから設定しても大丈夫だった。
**utf8mb4でConnector/Jを使う [#gc6a9f7e]
-[[java6で4バイトUTF-8文字を利用するには? - Java - 教えて!goo:http://oshiete.goo.ne.jp/qa/6781077.html]]


**ERROR 2006 (HY000) at line 445: MySQL server has gone away [#h628b574]
-my.iniやmy.confでmax_allowed_packet=32M などとして回避する
#pre{{
[mysqld]
max_allowed_packet=32M
}}
**MySQLのデータフォルダが以上に容量を消費している(Linux) [#q2a65378]
-バイナリログがたまっていることがある。rootで次のコマンドを実行すると全部のログを消すことができる。
#pre{{
 $ mysql -uroot -p
 $ mysql> PURGE MASTER LOGS BEFORE now();
}}

**LOAD DATA LOCAL INFILEでエラー [#f69226f2]
-末尾に\Nを指定してNULLをintの列に読み込ませようとincorrect valueといわれ失敗していた。
-ひょっとしてintにNULLが設定できないかと思ったがそういうわけではなくて、改行コードの指定がだめだった模様。LINES TERMINATED BY '\n'のように改行コードをきちんと指定すれば大丈夫になった(行の最後に\Nがあったのでこれが混乱した?)


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS