Web + Life Hack

〜True But Useless〜

【Rails】【mysql】日時型のカラム(deleted_at)に「むりくり」nullを入れる方法

みなさんはRailsMySQLといった組み合わせになっていますか?

Railsはscopeにより生成されたSQLに対しては論理削除が行われていないかチェックするため
deleted_at is nullを条件に追加し実行します。

その際、MySQLのdeleted_atはデフォルト設定のままだとNULLを入れる事が出来ず、
代わりに「0000-00-00 00:00:00」が設定されます。

普段なら問題ないのですが、今回、deleted_atに「値」が入ってる
レコードを復活させる必要があり、「値」をnullにしなければならない事態が
発生しました。

その際に実行したSQLは以下の通りです。

SET SQL_SAFE_UPDATES=0;
UPDATE g08m11 
SET    deleted_at = nullif(deleted_at, '0000-00-00 00:00:00') 
WHERE  id = 8285819;


ちなみに

SET SQL_SAFE_UPDATES=0;

MySQLワークベンチ用に必要なコマンドです。
MySQLワークベンチは簡単に更新が出来ないように
このコマンドを指定する必要があります。
これは知らないといつまで経っても実行出来ないので注意が必要です。


そもそもMySQLワークベンチってのを説明しますと、

データベースアーキテクト、開発者、DBAのための統合ビジュアルツールです。

便利なのでぜひ、利用してみてください。

詳細はここで
http://www-jp.mysql.com/products/workbench/



蛇足
TBS「アーティストSP」でハマったアーティスト
七尾旅人


七尾旅人 "サーカスナイト" (Official Music Video) - YouTube