リポジトリ名が変わってしまった!そんなとき #git

概要

リモートリポジトリの名前が変わってしまうと、ローカルリポジトリのfetch/push先がなくなってしまうので、その対応。

とどのつまり、リモートの向き先が変わるだけということなのだ

今の向き先を確認

git remote -v
origin  git@github.com:hoge/old-name.git (fetch)
origin  git@github.com:hoge/old-name.git (push)

向き先を変更する(originの場合)

git remote set-url origin git@github.com:hoge/new-name.git

変更を確認する

git remote -v

参考

http://qiita.com/8mamo10/items/a7be3e146a1197c6f1c0 http://d.hatena.ne.jp/wats/20100910/1284261816

オプティマイザが吐き出したクエリを確認する #mysql

概要

オプティマイザが実際に組み立てたクエリを確認する方法です。
実行結果や取得結果が期待通りにならない時など、ヒントが隠されているかもしれません。

手順

EXPLAINの後ろにEXTENDEDを追加するとWARNINGとして、オプティマイザが吐き出したクエリが出てくる。

mysql> explain extended
    -> select * from hoge;

mysql> show warnings

TIPS

参考

git コマンドのブランチ名などを補完する #git

git-completion.bashを導入するとgitコマンド補完されるようになるのでとてもうれしいヽ(=´▽`=)ノ

https://github.com/git/git/blob/master/contrib/completion/git-completion.bash

参考

http://qiita.com/snaka/items/4b0437a32da832d2e0db

mysqlのパスワード忘れた #mysql

ローカルのmysqlつなごうとしたら、rootのパスワード設定したのにパスワードを忘れた。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.11 Homebrew
  1. mysqlを停止
    mysql.server stop
  2. safeモードで起動
    mysqld_safe --skip-grant-tables
  3. 新パスワードを設定
    update user set authentication_string=password('新パスワード') where user='root';
  4. 反映
    FLUSH PRIVILEGES;
  5. mysqlを再起動
    mysql.server restart
補足

MySQL5.7はuserテーブルからpasswordフィールドが削除されたので、authentication_stringを使う必要があるらしい。

In MySQL 5.7, the password field in mysql.user table field was removed, now the field name is 'authentication_string'.

http://stackoverflow.com/questions/30692812/mysql-user-db-does-not-have-password-columns-installing-mysql-on-osx

Try & Errorで汚れてしまった履歴をきれいにする #git

概要

開発中、あーでもないこーでもない、とTry&Errorすることはあります。

普通はローカル環境で試してみると思うんですが、例えばCIとの連携だったりすると、修正しているファイルを実際にcommitしてpushすることになるかと思います。
(設定ファイルをこうしてみたり、ああしてみたり、なイメージ)

そうするとコミット履歴が汚れてしまうので、そんなときログをキレイにする方法です。

git rebaseでsquash する

複数のコミットをまとめることができます。

git rebase -i {コミットID}

こうすると、コミットID以降のコミットをまとめられます。
詳細は下記リンクが分かりやすかったです。
http://iwb.jp/git-commit-rebase-squash/

Conflictした!

Conflictした場合は、git statusとかで競合ファイルを確認・修正したあと、git addします。
そのあと(commitではなく)git rebase --continue とすることで、rebaseを継続することができます。
http://blog.seasons.cc/entry/20090329/1238351273

--force-with-lease で git push

既にpush済のbranchの場合、pushできなくなります。
force push は他の人の変更まで潰してしまうので、--force-with-leaseを使います。

幾つか注意事項があるので、下記を一読のこと。
http://qiita.com/upinetree/items/5d0b224b8e53ad276ea0

MySQL5.7にしたら今まで動いていたSQLがエラーになった #mysql

原因

デフォルトのSQLモードが違うための模様
http://qiita.com/nagi244/items/04747f8e4ec351b22311

Expression #n of SELECT list is not in GROUP BY 
clause and contains nonaggregated column 'dbname.b.name' 
which is not functionally dependent on columns in GROUP BY clause;
this is incompatible with sql_mode=only_full_group_by

対策

本筋(ちゃんと対応する場合)

MySQLsql_modeを指定しないとかなり寛容・ゆるふわ・いい加減。。
なので、本筋で言えば下記の対応を行うべきである

場当たり(とりあえず動かしたい場合)

設定ファイルを書き換える

Macだと↓あたりにテンプレがある

/usr/local/Cellar/mysql/5.7.11/support-files/my-default.cnf

mysqlが読み込んでくれる場所に置く

cp my-default.cnf /etc/mysql/my.cnf

sqlモードを書き換える(qiitaの記事を信じるならonly_full_group_byだけ無効にすればいいのかも)

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

再起動する

mysql.server restart

補足

SQLモードの確認

SELECT @@sql_mode;

SQLsql_modeを書き換えることもできるようだが、どうもセッションの間だけしか維持されないようだ

SET sql_mode = '';