仕様変更があって、既に本番稼働しているシステムに手を加えないといけなくなった。
具体的には、データベースのあるテーブルのあるカラムを VARCHAR(24) から VARCHAR(48) に変更する。
ま、使ってる DBMS が PostgreSQL なんで、psql で DB にログインして
ALTER TABLE table_hogehoge ALTER COLUMN column1 TYPE varchar(48);
実行するだけや・・・と、実際にうちのサーバにテスト環境作って確認。バッチリなので本番環境で実行してみると・・・
ERROR: syntax error at or near "TYPE" at character 46
だって・・・(^^;
見てみたら、お客さんとこの PostgreSQL はバージョンが 7.4.19・・・
そりゃ駄目だ。上記のコマンドはメジャーバージョンが 8 からしか使えんし・・・
(ちなみにうちのテスト環境の PostgreSQL は 9.0.4)
仕方ないので、
BEGIN;ALTER TABLE table_hogehoge ADD COLUMN new_column1 varchar(48);UPDATE table_hogehoge SET new_column1 = CAST(column1 AS varchar(48));ALTER TABLE table_hogehoge DROP COLUMN column1;ALTER TABLE table_hogehoge RENAME COLUMN new_column1 TO column1;COMMIT;
という、「新しい VARCHAR(48)なカラムを作って、元のカラムのデータを移し、元のカラムを削除した後で、新しいカラムの名前を元のカラムのものに変更」・・・という面倒臭い手順を経てサイズ変更には成功。
但し、この方法だとカラムの位置がずれるので(新しいカラムはテーブルの一番最後に追加される)、プログラムの中でテーブルの内容を二次元配列にセットしている箇所なんかは全部直さないといけなくなった。とほほ。
昔から俺は「変なサーバ」と呼んでる某地場企業のホスティングサーバで、海外のサーバ管理システムを使っているらしんだけど「セキュリティをガチガチにしたあげくに使い勝手が悪くなってる」典型みたいなサーバ(^^;
PostgreSQL も俺の方で勝手にバージョン上げたり出来ないのでどうしようもない。(何せ、本来有るはずの PostgreSQL のコマンドのいくつかも「セキュリティ上の理由」で削除されているような特殊な環境だ(^^;)
まあ、色々しがらみもあって「サーバ載せ替えて」というのも難しいので、しばらくこの「泥棒を入れないためにドアを溶接して住人も入れなくなった家」みたいなサーバとは付き合っていく必要があるのである(^^;
コメントする