corserverでデータベースを使用するときの注意点

バス釣り用のロッド・リールの組み合わせを検索できるサイトを構築したのですが、
久々にデータベースを使ったのもあって、
ちょいちょい初歩的な部分で躓くことがあり、
忘れないための自分メモ。

【サーバー 】 coreserver
【言語】 perl
【データベース】 postgresql

 

テーブル名に大文字は使うな

例えば、「Table1」という大文字を含むテーブル名があった場合の以下のSQL文。

SELECT * FROM Table1_list

これでは動かない。

SELECT * FROM "Table1_list"

と、”(ダブルクォート)で囲む必要がある。

ところが、これでは以下の様にプレースホルダを使用した時に厄介。
エスケープしても動かなかった。

my $sth = $dbh->prepare("SELECT * FROM \"Table1_list\" WHERE no = ?"); 
$sth->execute(1);

なので、テーブル名を「Table1_list」→「table1_list」と、
大文字から小文字に修正してあげる方が根本的な解決方法として最善。

 

エクスポートが出来ない

phpMyAdminを利用して、データベースデータのエクスポートを試みるが、
下記のエラーが表示され上手くいかない。
Export error: Failed to execute pg_dump (given path in your conf/config.inc.php : /usr/local/pgsql/bin/pg_dump).
Please, fix this path in your configuration and relog.

そこで、サーバー管理会社(coreserver/valuedomain)に問い合わせてみると、
「conf/config.inc.php のpg_dumpのパス設定を以下に書き換えろ」との事。

デフォルトでは、
$conf['servers'][0]['pg_dump_path'] = '/usr/bin/pg_dump'; 
$conf['servers'][0]['pg_dumpall_path'] = '/usr/bin/pg_dumpall'; 
となっているので、
$conf['servers'][0]['pg_dump_path'] = '/usr/local/bin/pg_dump'; 
$conf['servers'][0]['pg_dumpall_path'] = '/usr/local/bin/pg_dumpall';
か、もしくは
$conf['servers'][0]['pg_dump_path'] = '/usri/local/pgsql/bin/pg_dump'; 
$conf['servers'][0]['pg_dumpall_path']= '/usr/local/pgsql/bin/pg_dumpall';
に変更するとエクスポートできるようになります

この方法については、他サイトで記事にしてあったので知ってはいたのだが、
レンタルサーバーじゃ「conf/config.inc.php」には入れてくれないだろと思い込んでいた。
しかし、FFFTPで接続して探してみたら、ありました。

正確なパスは、こう↓
/public_html/log/phppgadmin/conf/config.inc.php

さっそく書き換えてみるが、うまくいかない。

再度、問い合わせると、今度は「.htaccessファイルを設置した」との事。
これでうまくいった。

探ってみると、「/public_html/log/phppgadmin/.htaccess」に設置してありました。
.htaccessの内容は、以下の一文。

AddHandler application/x-httpd-phpcgi .php

元々、coreserver/valuedomainでは、PHPはCGIモードで動かす必要がある為、
Wordpress等で画像アップロードを使うには、
この一行を記載した「.htaccess」を設置する必要があるのだが、
同じように必要だったみたい。

 

CSVインポートする際は「”(ダブルクォート)」で囲む

エクセルでデータを作成してインポートを試みたのだが、うまくいかない。
原因は、「要素を”(ダブルクォート)」で囲んでいなかったからだった。
しかし、エクセルにはそのような機能はないので、
自分でプログラムを組むか、ソフトを使用する必要がある。

私は、「Cassava Editor」を使用しました。

 

使い方は以下の通り。

[Cassava.exe]を起動し、
[オプション]-[オプション]-[全てのセルを”で囲む]にチェックし、
保存すればOKです。

cassava

あとは、そのデータをphpMyAdminでインポートしましょう。

この記事のURLをコピー
【プロ監修】バリュードメイン入門サイト | 俺のレンタルサーバー 【プロ監修】バリュードメイン入門サイト | 俺のレンタルサーバー
コアサーバー・バリューサーバー・XREA向け情報サイト作りました。 サーバー契約からドメイン登録の手順、SSL化の方法など。

関連情報

2 件のコメント

  • まったく同じ問題に遭遇してこちらに辿り着きました。

    こちらに記載の方法をすべて試してみても解決できなかったので、value-domainのサポートに解決方法を問い合わせてみたところ、サーバのDBを「 PostgreSQL 8.2.4 」にアップグレードしていただき、( config.inc.php )はデフォルトのままでDB操作(エキスポートなど)できるようになりました。

    ご報告まで。

    • 通りすがり
    • 2014年4月11日 6:55 PM
  • 通りすがりさんへの返信

    貴重な情報、有難うございます!

    • ウェブノコエ管理人
    • 2014年4月15日 10:33 PM

メールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。