BOROTS

日々思った事とか

DBの学習

特に急ぎの仕事もなく、マッタリと業務効率化(キリ、の為にExcel VBAを弄ってて、今日は早く帰宅して三嶋くんのピッチングを一球速報で見るんだZE☆(GAORAは契約していないので、阪神戦はテレビで見れない)と思ってたら某先輩が僕の席に来て「ごめん、ごめん。Redmineのチケットを削除しちゃった。復旧ヨロピク(・ω<)テヘペロ」と言ってきました。

で、状況を確認した所、
   f:id:okaji:20140411013159p:plain
となりましたが、このチケットが無くなるのはそれはそれでまずいので、ちょっと試行錯誤してみましたところ、なんとか解決してチケットを復活させることが出来ました(Google先生って凄い)

という事で、メモでも。

○調べてわかったこと
 ・ チケットのデータはDB上も削除
 ・ チケットへの書き込みはRedmineのログに残ってる
 ・ 親チケットに対する小チケットは無い(これが大分助かった)
 ・ Google先生に聞いた所、DBのテーブルは
    - issues : チケットのテーブル
    - watchers: チケットのWatcherを指定するテーブル
    - user : Redmineユーザ一覧のテーブル
    - journals: チケットに対するコメントのテーブル
  こいつらを駆使すれば良いらしい、

○やったことのメモ

  • mysqlを起動して、DBにアクセス

% mysql -u 'user'
mysql> use 'database'

  • チケットのテーブルに新たなチケットを作成

mysql> insert into issues (<ここにはテーブルの列名を記載、列名の説明は
ここを参照>)
value (<ここはテーブルのタグの順番に値を記載する。"NULL"の場合は"NULL"と書く
(←これ忘れるとSyntax Error)>)
※例
 mysql> insert into issues (id,author_id,description) value(100,40,"チケットのタイトル")
 とすると、
  id = 100, author_id=40, descriotion="チケットのタイトル"
というデータが issues のテーブルに書き込まれる。

  • チケットにそのチケットに関するやりとりを追加

journals のテーブルに追加していけば良い。追加方法はinsert into を使う。
※ただ今回は日本語処理が上手く行かなかったので、ゴリゴリWebでやりとりを追加。
その後、やりとり一つ一つの更新日時、UserをDBにアクセスして一括変更。

  • チケットにWatcherを追加

watcher のテーブルに追加。追加方法はinsert intoで良い。

  • 備考

※各テーブルの項目は、
 mysql> DESC テーブル名
 で確認可能

※値を確認したければ
  mysql> select * from テーブル名
 で確認可能。(*はテーブルの列名を指定することも可能)

と、そんなこんなで午後はずっとRedmine, mysqlと格闘する事になりました。
なんとか格闘が完了した後、Excel AddInの続きを終わらせて帰宅。

結局帰宅したら、プロ野球ニュースの時間でした。
(本日、ベイスターズがありえん負け方したんすよ。で、高木豊さんがプロ野球ニュースの解説で出てたので何言うか楽しみだったのですが、ベイスターズ戦スルーされちゃいましたw)

それにしても。
 (´-`).oO(予想外の作業が入ってちょいと疲れたけど、こういうDB弄ったり、VBA書いたりソフト的な事をするのはやっぱり楽しいなぁ)

では。