#author("2016-04-29T19:48:18+09:00","default:wikiwriter","wikiwriter") &tag(MySQL/トラブルシューティング); *目次 [#p8645987] #contents *関連ページ [#z2994cad] *参考情報 [#m5c177f8] *ネットワーク [#pdda106a] **ネットワーク経由で接続できない [#z80b69d4] -skip-networkingが設定されていないかどうか確認する。設定されていたらコメントアウトする。 -bind-addressを確認する。bind-addressで指定されたアドレスからしか接続できない。あらゆるホストから接続したい場合、bind-addressをコメントアウトする。 -Access deniedになる場合は、Grantで接続したいアドレスつきで権限を与える。 *起動時 [#g1d0dc8c] **InnoDB: Error: log file ./ib_logfile0 is of different size 0 XXXXXX bytes [#f502c67f] -[[InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes - tetsuyai’s blog:http://tetsuyai.hatenablog.com/entry/20110418/1303133792]] -ログファイルのサイズが何かの原因でかわってしまったのが原因。 mysql stop mv /var/lib/mysql/ib_logfile0 /tmp mv /var/lib/mysql/ib_logfile1 /tmp mysql start *テーブル関連 [#g43d79d5] ** 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]] **incorrect string value [#ace31116] -[[[mysql]Mysqlで作ったテーブルにUTF-8の文字を突っ込むとincorrect string value | ブログ | そうだ車輪と名づけよう 5th:http://www.atyks.org/blog/detail/2013-03-23-1]] *データのインポート [#ufa7dc74] **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があったのでこれが混乱した?) ***The used command is not allowed with this MySQL versionが表示される場合 [#x397a63c] -コマンドラインで以下のオプションを渡す mysql --local-infile=1 -もしくはmy.cnfの[mysql]セクションに以下を追加。 local-infile=1 *データが壊れた [#ccd1ec65] **innodb_force_recoveryがどうのこうのといわれる [#zc6f2448] -ディスク故障/不正なシャットダウンなどでinnodbのデータベースファイルが不整合を起こした場合に発生。 -my.cnfに「innodb_force_recovery = 1」を入れて再起動し、起動したらデータベースをdumpするという作業を行わないとだめらしい(innodb_force_recovery = 1をいれたままの運用はだめ)。