【MySQL】mysql、mysqldumpコマンドメモ
mysqlで使うコマンドを忘れやすいのでメモ。
■mysqlコマンド
オプション | 説明 |
-u | ユーザ名 |
-p | パスワード |
-d | データベース名 |
-e | 直接SQL実行 |
<例>
※パスワードに記号がない場合
mysql -uhoge -phogehoge hogdb
※パスワードに「| 」などの記号がある場合
mysql -uhoge -p'hoge|hoge' hogdb
⇒パイプ処理と判別されてしまうため、シングルクォートで囲みエスケープする。
■mysqldmpコマンド
オプション | 説明 |
-u | ユーザ名 |
-p | パスワード |
-h | ホスト名 |
-B(database) | データベース指定 |
-A(all) | データベース全て |
-d(no-data) | 定義のみ |
<例>
mysqldump -uhoge -phogehoge hogdb > /tmp/hogdb_`date "+%Y%m%d_%H%M%S"`.sql
【MySQL】unsigned auto_incrementについて
テーブルカラムを定義する時、IDなどの主キーにはunsigned、auto_incrementを付けるのが良い。
auto_increment:レコードが追加されたとき、自動的に付与される(インクリメントされる)
unsigned:正の数のみ設定できるようにする
intの場合、通常は-2147483648~2147483647までの数字を格納できるが、
unsignedにすることによって、0~4294967295まで格納できるようになる。
テーブルをcreateする場合、以下のように書く。
create table hoge (
id int(10) unsigned auto_increment primary key
name varchar(50)
)
これで、idに各属性が付与される。
また、insertする場合、自動的に付与されるため、idは設定しなくてもよい。
insert into hoge(name) values('ほげ');
【PHP】cakePHPで嵌ったこと
PHPアプリケーションを「/var/www/html/」へ配置した。
httpd.confでDocumentRoot変更、apache実行ユーザ、グループの変更をした。
最初のログイン画面は表示される。
しかし、次のページに遷移するとなぜか404が返却されてしまう。。
調べに調べて解決できた答えが以下。
httpd.confを以下の通り直した。
<Directory />
AllowOverride none
Require all denied
</Directory>
↓↓↓↓↓↓
<Directory />
AllowOverride all
Require all denied
</Directory>
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride none
↓↓↓↓↓↓
AllowOverride all
どうやら、 DocumentRoot に対して .htaccess による設定の上書きを許可するように設定出来てなかったらしい。(デフォルトのままだった)
最後に「systemctl restart httpd」にてApacheを再起動を忘れずに・・。
【Oracle】マテリアライズドビューの自動更新
先日、マテリアライズド・ビューを触れたので、書き残す。
そもそもマテリアライズド・ビューとはなんだろうか?
- マテリアライズド・ビューとは
通常のビューとは異なり、データを半永続的に保持する。
あるビューを頻繁に参照する場合に使用する事が多い。
都度、データ検索、抽出しないため、処理の高速化が期待できる。
上記の通り、半永続的にデータを保持するため、ある一定のタイミングでビューを更新する必要がある。
手動で実行する方法もあるが、面倒なので、自動で実行させるようにしたい。
以下のSQLを流すことで、毎日0時に実行させることができた。
ALTER MATERIALIZED VIEW [スキーマ名].[マテビュー名] REFRESH START WITH TO_DATE('2018-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS') NEXT trunc(sysdate, 'DD') + 1 + 00/24;
BEGIN dbms_mview.refresh('[スキーマ名].[マテビュー名]', 'c'); END;
また、以下のSQLで確認した。
select last_date,last_sec,next_date,next_sec,interval,what from dba_jobs WHERE SCHEMA_USER = '[スキーマ名]';