Oracleクライアントを入れたらeclipseが立ち上がらなくなった場合
JDKのパスをoracleのJDKに書き換えているのが原因。
対策としてはeclipseの起動オプションでJREを指定してあげる。
C:\work\eclipse\eclipse.exe -vm C:\j2sdk1.4.2_05\bin\javaw
WebからDBの管理ができるツールphpMyAdminをいれて少しでもMySQLに慣れようという目論見
でまずはMySQLのパスワードを設定する(Vineのバイナリインストールだと初期rootパスワードはなし)
$ mysqladmin -u root password 'xxxxxx'
一度設定したら次からは変更するのにもパスワードが必要になる。当然といえば当然だ。
$ mysqladmin -u root password 'xxxxxx' -p
MySQLの設定がすんだら次はphpMyAdminの設定だ
まずはパスワードなどを保持するconfig.inc.phpをコピーして作成し、
$cfg['Servers'][$i]['controluser'] = 'root';
$cfg['Servers'][$i]['controlpass'] = 'xxxx';
を設定してアクセスしてみると「設定ファイルは今は秘密パスフレーズを必要とします」のエラー
でもう一度config.inc.phpをみてみると
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR
COOKIE AUTH! */
ここを埋めないといけないわけなので、rootのパスワードを入れる。
そしれログイン画面が出てきたのでここでもパスワード?ってことはパスワードの設定は不要なわけで、 結局設定はblowfish_secretだけでよかったということになる。
無事利用可能になった。当然こういった管理ツールはApacheの設定でアクセス制限をかけておくべき。
いちいちIF文で主キーの存在チェックをしてupdateとinsertを切り替えるなんてめんどくさくてやってられるか!ということでそんな命令がないか調べてみた。
するとOracleにはmerge intoという命令があるらしい。MySQLはreplace構文がある。しかしながらこれ以外のDBについては似た機能を持つものはないようだ。なにをかくそうSQLServerでこの機能が欲しかったのだが・・・orz
初歩レベルではあるが重要なこと
UNIONは重複レコードをマージする。UNION ALLは結合対象のすべてのレコードをそのままをつなげる。
パフォーマンス的にはUNION ALLが何もしない文はやい。
駆け出しの頃に作った家計簿アプリ。
データベースの設計が甘く、なんと主キーがない(笑)というわけで主キーを追加して作り直したが、 その時に既存のテーブルから新しいテーブルに移す作業が発生した。
この時はINSERT INTO 移行先テーブル名 (列1、列2) select 列1、列2 from 移行元テーブル名とすればよい
調べればすぐわかることだが、忘れがちなのでアップしておく
毎度おなじみのOracle Express Editionのインストール
今動いているサーバはメモリが1Gあるので常用目的で入れてみる(これまでは入れるだけで放置ばかりだった)
OTNのUSAからrpmファイルを取得し、
rpmをそのままインストールすると下記エラーとなるので注意
エラー: 依存性の欠如:
libaio >= 0.3.96 は oracle-xe-10.2.0.1-1.0.i386 に必要とされています
# yum install libaio
# yum install bc
でlibaioを入れておく。入っている場合は当然不要。さらにbcコマンドが必要なので(最小インストールだから入ってないのかも)これも入れる
# rpm -Uvh oracle-xe-10.2.0.1-1.0.i386.rpm
おそらくインストールはすぐに終わるだろう。そしたらポート番号やパスワードの設定
主キーに意味のない連番をつかうことをサロゲートキーというらしい。
対するはナチュラルキー(業務キー)ということ
ナチュラルキーの例。
顧客コードとして、その顧客が合併などにより二つの顧客コードが混じる時に不都合が生じる。
上記のような変更に強いのでサロゲートキーがお勧めというわけ
主キーに意味のない連番をつかうことをサロゲートキーというらしい。
対するはナチュラルキー(業務キー)ということ
ナチュラルキーの例。
顧客コードとして、その顧客が合併などにより二つの顧客コードが混じる時に不都合が生じる。
上記のような変更に強いのでサロゲートキーがお勧めというわけ
Oracleのociドライバーを利用して接続しようとした時に出たエラー
JNIを使っている時にライブラリとリンクが取れないというエラー
今回の根本原因はWEB-INF/libにもoracleドライバーが存在してそちらが読まれてしまって、 ociドライバー用の読み込みが走らなかったのが原因。
省メモリで動くのでローカル開発につかっているH2 Database
なぜかODBCの接続設定がPotgresの設定になっていたので気になって調べてみたら、一年ぐらい前から独自のODBCドライバの開発をやめてPotgresのODBCドライバに相乗りする形になったそうな。
どうせならOracle含め全部統一してほしい。などと無茶な妄想をしてみる。
select * from テーブル名 into outfile "/var/tmp/ファイル名" FIELDS TERMINATED BY ',';