トリガー設定時に発生したエラー

MySQLでトリガー作成してデータをINSERTしようとしたらエラー表示されてしまった。

Thread stack overrun: 15200 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld --thread_stack=#' to specify a bigger stack.

以下参考に対応。
http://spiri-tua-lism.com/?p=272

「thread_stack」の値を増やせばOK。
環境はローカルのMAMP2.2。MySQLのバージョンは、5.5.33の模様。

# /Applications/MAMP/Library/bin/mysql --version
/Applications/MAMP/Library/bin/mysql Ver 14.14 Distrib 5.5.33, for osx10.6 (i386) using EditLine wrapper

thread_stack書き換え。

# vim /Applications/MAMP/conf/my.cnf

thread_stack = 128K
 ↓
thread_stack = 256K

MAMP再起動。
INSERTクエリ再実行。

もんだいなし。


thread_stackについての詳しい説明はここ。(5.1のドキュメントだけど)
http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_thread_stack

文中に「The default of 192KB (256KB for 64-bit systems) is large enough for normal operation.」とあるので、256Kで適切かと。


# いろいろ調べた結果、通常はデフォルトでもんだいなし。
MAMP環境の制限が厳しいために起こる模様。

# また、Amazon RDSでは別の原因でトリガが走らない。
その場合は以下参照。
http://oh-sky.hatenablog.com/entry/2013/08/25/202657