いももちのきもち

新米プログラマによる技術的メモ

MySQL Using filesort とUsing temporary

MySQLでEXPLAIN文を使ってクエリの実行計画をみたらExtra欄にUsing filesortとUsing temporaryが出ました。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 8.8.2 EXPLAIN 出力フォーマット
これらが表示されている場合、パフォーマンスは良くないことが予想されるため改善が必要です。

MySQLのUsing Temporaryについて - aeroastroの日記

Perlで変数をprintするとき、文字との間を開けたくない

変数名を{}で囲みます

my $string = 'moji';
print "foo${string}bar";
# foomojibar

参考:How to print variables in Perl - Stack Overflow

MySQLのソケットエラーERROR 2002の解決

環境はCentOS 6.9です。

$ mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

時々ソケットファイルがなくなる?
mysqlの再起動で解決します。自動で/var/lib/mysql/mysql.sockが作られるようです。

$ sudo /etc/init.d/mysqld restart

mysqlサーバの文字化け対応記録

家のCentOS6環境で使っているmysqlのDBに格納した日本語データが文字化けしている!
mysqlの各設定の文字コードを確認!

show variables like "chara%"; 

character_set_databaseがutf8ではなくlatin1になっていました。
テーブルの定義変更でも文字コードを指定できますが、以下のページを参考にして/etc/my.cnfにデフォルトの設定がutf8になるように追記しました。
restart後、新規作成したテーブルはすべてutf8が使われることを確認しました。
qiita.com
qiita.com
interu.hatenablog.com
kzworks.at.webry.info

mysqlサーバの起動・終了

mysqlの起動はmysql.server start
だがrpmの場合は/etc/init.d/mysqldがmysql.serverに相当するそうだ(※1)。
mysqldを直接呼び出すのはどのプラットフォームでも機能する(※2)。

環境
CentOS6.9

$ mysql --version
mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

mysqlのversionは古いまま使っている...

$ sudo /etc/init.d/mysqld stop
mysqld を停止中:                           [ OK ]
$ sudo /etc/init.d/mysqld start
mysqld を起動中:                           [ OK ]
($ sudo /etc/init.d/mysqld restartもあるよ)

参考文献:
※1 MySQLサーバの起動と停止 | OpenGroove
※2 MySQLオフィシャルサイト

npmでインストールしたパッケージ一覧の確認

プロジェクトのローカルにinstallしたもの
npm ls
npm ls --depth=0

グローバルにinstallしたもの
npm ls -g
npm ls -g --depth=0

【メモ】基本的linuxコマンドの基本的使い方の確認

就職しましたので、基本をよく確認しましょうということでコマンドの使い方をいくつか確認したいと思います。

pwd 現在のディレクトリの位置を示す。
cd ディレクトリを移動する

例:
cd . 現在のディレクト
cd .. 親ディレクト
cd / ルートディレクト
cd ~/ ホームディレクトリ(※)
cd (cd単独)ホームディレクトリに移動する。

mv ファイルやディレクトリの移動、ファイル名の変更に使う

例: mv file1 file2: file1をfile2に名前変更
-f, --force: 警告なしに上書き

ls ディレクトリ内のファイル一覧を表示する

例: ls -la
-l: 詳細な形式で表示する
-a: .で始まるファイルも一覧に表示する

cp ファイルをコピーする。

cp file1 file2 # file1をfile2という名前でコピーする
cp -r hoge1 hoge2 # -r: ディレクトリを再帰的にコピーする

touch タイムスタンプを現在の時間に更新する

新規ファイルを生成するのにも使える。

chmod ファイルやディレクトリのアクセス権限を変更する

chmod 777 hoge.txt
Linuxの権限確認と変更(超初心者向け) - Qiita

alias コマンドの別名をつける ⇔ unalias

alias ll='ls -al' # llと打つとls -alが実行される
alias #現在登録されている別名の一覧確認

※ホームディレクトリとは(Wikipediaより)

ホームディレクトリ(home directory)はマルチユーザシステムのコンピュータにおけるディレクトリの種類のひとつ。通常、ユーザがログインした際のカレントワーキングディレクトリである。
/home/username - 多くのUNIXや、BSDLinuxディストリビューションの多くで使用される。
/Users/username - macOSNEXTSTEP、OPENSTEPなどで使用される。


参考文献:
Linuxコマンド集:ITpro
各コマンドのman ページまたは--helpをつけて実行したときの結果
Linuxの権限確認と変更(超初心者向け) - Qiita
Wikipedia