#author("2016-09-23T17:27:41+09:00","default:wikiwriter","wikiwriter")
#author("2019-01-16T14:22:04+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


**Unknown collation: 'utf8mb4_unicode_520_ci' [#ua995c83]
-utf8mb4_unicode_520_ciはMySQL 5.6以降でサポートされているためMySQL 5.6より前のバージョンでそのままインポートしようとすると上記のエラーが発生する。
-utf8mb4_unicode_520_ciをutf8mb4_unicode_ciに置き換えるしかない。


*データが壊れた [#ccd1ec65]
**innodb_force_recoveryがどうのこうのといわれる [#zc6f2448]
-ディスク故障/不正なシャットダウンなどでinnodbのデータベースファイルが不整合を起こした場合に発生。
-my.cnfに「innodb_force_recovery = 1」を入れて再起動し、起動したらデータベースをdumpするという作業を行わないとだめらしい(innodb_force_recovery = 1をいれたままの運用はだめ)。

**Error: tablespace id is XXXXX in the data dictionary [#g1972349]
-以下のようなエラー。
#pre{{
InnoDB: Error: tablespace id is 15900 in the data dictionary
InnoDB: but in file ./foodb.ibd it is 25416!
}}
-TimeMachine Backupからリカバリした際に発生。要するにバックアップ時保存されていたデータが一貫性がなく(バッファにたまっていたとかで)不整合が起こっているということだろうか。
-[[replication - Restoring a slave MySQL database from raw backups of master gives InnoDB tablespace errors - Server Fault:http://serverfault.com/questions/232374/restoring-a-slave-mysql-database-from-raw-backups-of-master-gives-innodb-tablesp]]
-さいわい開発環境なのでデータをインポートしなおして復旧。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS