• ベストアンサー

postgresqlとmysqlの違い

こんにちは。 OSはRedhatLinux7.1を使っています。 Apache_1.3.26 php-4.2.1 PostgreSQL-7.2.1 mysql-3.23.52 を使ってWebアプリケーションを作ろうとしています。 Apache+php+PostgreSQLで、 SJISで書いたphpプログラム(htmlのページの表示もSJISに指定)を使って表示されたページからPostgreSQLにデータを登録しようとするとエラーになります。 Warning: pg_exec() query failed: ERROR: Invalid EUC_JP character sequence found (0x8971) となります。 同じようにApache+php+mysqlでやってみたら登録できます。 PostgreSQLはSJISでデータを登録できないのでしょうか? どこをどのようにすればいいのかわかりません。 初歩的で申し訳ありませんがアドバイスお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jakarta
  • ベストアンサー率38% (607/1597)
回答No.1

http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/multibyte.html Table 5-1. Postgres(文字エンコーディング設定)を見るとEUC_JPにしか対応してないようですね。 参考URLにPostgreSQL7.1日本語マニュアルのURLをいれておきます。 何か疑問に思うことがあれば必ず役に立つと思います。

参考URL:
http://osb.sra.co.jp/PostgreSQL/Manual/
emitika
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.2

SJISでデータについては、「自動エンコーディング変換」という機能があるようです。 #1の方の紹介サイト http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/multibyte.html の5.2.3のところをご覧下さい。 両者の比較についてはとりあえずこちらを。 http://www.fukumi.co.jp/tips/postgresql.htm 日経バイト2002.10 p.167に比較記事がありますので機会があればお読みください。 このなかでの要点は、「速度のMySQL、機能のPostgreSQL」ということです。 MySQLの機能が不足している点として、サブクエリ、ストアドプロシジャに対応していない点が 上げられています。 Webサイトで利用する場合は、MySQLの方がいいのかもしれませんね。

emitika
質問者

お礼

ありがとうございました。

関連するQ&A

  • PostgreSQLとMySQL

    OSはRedhatLinux7.1 Apache_1.3.26 php-4.2.3 PostgreSQL-7.2.1 mysql-3.23.52 を使っています。 データベースの勉強をするために Apache+php+PostgreSQL Apache+php+MySQL で同じWebアプリケーションを作っていこうと思っています。 しかし、どのように比較し、どのように勉強していけばいいのか悩んでいます。 PostgreSQLとMySQLではphpの関数が違う事はわかったのですが。。。 よろしければアドバイスお願いします。

  • PostgreSQLでエラーinvalid byte sequence for encoding "EUC_JP": 0x9363

    教えてください。 ■環境 Apache2 PHP5 PostgreSQL8 すべて文字コードEUC-JP PHP5にてcsvファイルを取り込み mb_convert_encodingでSJIS→EUC-JPへと変換後 PostgreSQLへinsertしているのですが、 下記エラーが発生してしまいます。 PostgreSQLでエラーinvalid byte sequence for encoding "EUC_JP": 0x9363 http://shimax.cocolog-nifty.com/search/2005/06/invalid_byte_se_6658.html 上記にヒントがありますが、 解決に至っておりません。 取り込めないcsvデータを添付しますので、 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • Apache+PostgreSQL+phpでWebアプリケーション

    こんにちは。 OSはRedhatLinux7.1を使っています。 Apache_1.3.26 PostgreSQL-7.2.1 php-4.2.1 でWebアプリケーションを作ろうとしています。 言語はshift_jisを使いたいと思っているのですが、 データベースに登録したデータを呼び出してWeb上に表示しようとするとeuc_jpで表示されてしまっているようで、文字化けしてしまいます。 データの登録にはwindowsのパソコンからpgaccessを使ってPostgreSQLにアクセスしています。 どのように解決すればいいか教えてください。 お願いします。

  • mysqlでオートナンバーにするには?

    OSはRedhatLinux7.1 Apache_1.3.26 php-4.2.3 mysql-3.23.52 を使っています。 mysqlでデータ型をオートナンバー型にしたいのですが、何と指定すればいいのですか? postgreSQLではserialと指定するようなのですが。。。 auto_increment?ってゆーのでやってみたのですがエラーになってしまい先に進めません。 アドバイスお願いします。

  • mysqlで掲示板

    OSはRedhatLinux7.1 Apache_1.3.26 php-4.2.3 mysql-3.23.52 を使っています。 掲示板を作りたいと思っているのですが、参考になるサイトが見つからず困っています。 PostgreSQLのサンプルはたくさんあるのですが・・・ それをmysqlに書き換えようとするとうまくいきません。 何かアドバイスがあればお願いします。 また、よいサイトがあれば教えてください。 お願いします。

  • Mysql用のプログラムをPostgresql用に変えたい

    現在php+PostgreSQLでのアプリケーション制作を勉強中です。 で、参考書にあるMysql用に書かれたプログラムを参考に、PostgreSQL用に書き換える、といった勉強方法をとっているのですが、どうしても直せない箇所があるので、どなたお力添えいただけませんでしょうか? Mysql用サンプル <?php // =========================================== // 設定 // =========================================== // サーバ/データベース/ユーザ/パスワード $sv = "localhost"; $dbname = "xx"; $user = "xxxx"; $pass = "xxxx"; // 表示文字コード define("ENCDISP", "EUC-JP"); // =========================================== //  パラメータの取得 // =========================================== $act = (isset($_REQUEST["act"])) ? $_REQUEST["act"] : ""; // ================================================= //  処理開始 // ================================================= ?> <?php conndb(); ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=EUC-JP"> <title>アンケート</title> </head> <body> <?php // -- ページ内容の表示 switch ($act) { case "a": // 回答一覧表示 gamen_iti(); break; default: // 質問表示 gamen_q(); } ?> </body> </html> <?php closedb(); ?> <?php // ================================================= // ----- アンケート質問画面 // ================================================= function gamen_q() { global $conn; $sql = "SELECT * FROM an ORDER BY id desc"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); if (mysql_num_rows($res) <= 0) { return; } $row = mysql_fetch_array($res, MYSQL_BOTH); ?> ・・・ 上記の 「if (mysql_num_rows($res) <= 0) { return; } $row = mysql_fetch_array($res, MYSQL_BOTH);」の部分です。 これを単純に↓に変えてみたもののもちろんエラーとなり、 「if (pg_num_rows($res) <= 0) { return; } $row = pgsql_fetch_array($res, PG_BOTH);」 以後、試行錯誤しているのですが、どうにもこうにも打開できません。 どなたか、ぜひとも教えていただければ大変たすかります。 よろしくお願いいたします。 プログラムをスペースの都合上、一部抜粋のような形になっておりますが、もっと続きをみてみないとどうにもならない。。ということであれば、ご一報いただければと存じます。

  • MySQL+PHPサイトでSJISからEUCに変換したい

    いつもお世話になっております。 現在PHP4.3.9+MySQL4.1.2でSJISコードで運営をしておりますが、サイトの文字コードをEUCに変更しようかと検討しております。それで、現在いろいろとEUCコードでMySQLから引っ張ってきたデータの表示及びMySQLへのデータ登録の実験をしております。 まずは、PHPファイルをEUCに変換し、php.ini内のSJISだった箇所を下記のようにEUC-JPに変換しました。 mbstring.internal_encoding = EUC-JP mbstring.http_output = EUC-JP そして、PHPファイル内でMySQLへ接続後文字コードを指定している箇所を $sql="SET NAMES ujis"; mysql_query($sql); と変更しました。 実際のPHPファイルとphp.iniに関する部分のみEUCコードに変更し、sjisで設定しているMySQLの設定ファイルとテーブル内は何も変更していない状態です。この状態でフォームに入力した内容をMySQLのテーブルに追加し、追加した情報をPHPで表示する実験をしましたが特に文字化け等の問題は無く動作しました。また既にMySQLに登録してあるデータをEUCの環境で表示させましたが、問題なく表示されました。 前置きが長くなりましたが、MySQLの設定を特に変更しなくても今回私が行なった方法でSJISからEUCへの変換をしてしまって問題は無いでしょうか?PHPのファイル数やMySQLのテーブル数が多いので、いきなり実験通りに動くか不安があるので、質問させていただきました。 PHPやMySQLの文字コードの初歩的なことが分かっていないもので、変な質問になってしまいましたが、アドバイスいただければ幸いです。

    • ベストアンサー
    • PHP
  • WindowsNT上でPostgreSQLを動かす

    こんにちわ。 WindowsNT上でApacheを使ってPHPとPostgreSQLを動かそうとしています。PostgreSQLはCygwinを使って動いてます。 やりたいことはPostgreSQLでデータベースを作成し、それをPHPを使ってデータベースの検索ページを構築したいのですが、その他のPHPページちゃんとブラウザー上で見れるのですが、PostgreSQLを含んだページは何も表示されないのです。PHPかApacheで設定するところがあるのでしょうか??それともPostgreSQLのどこかで?? どなたかWindowsでPostgreSQLを使っている方ご教授願います!!

  • MySQL からPostgreSQL へ移行後に、急に500エラーにな

    MySQL からPostgreSQL へ移行後に、急に500エラーになった件について EC-CUBE2.4 を利用しており、先日、MySQL5からPostgreSQL8へ 移行しましたが、しばらくは問題なかったのですが、 急に、ECトップページにアクセスすると、500エラーになりました。 通常のHTMLファイルには問題なくアクセス出来ており、 .php ファイルが500エラーという状態です。 Apache2のエラーログを見ると、以下のログがありましたが、 解決策はございますでしょうか? PHP Parse error: syntax error, unexpected T_IF, expecting T_FUNCTION in /パス/eccube/data/class/SC_DbConn.php on line 137 PHP Fatal error: Call to undefined method DB_Error::getCol() in /パス/eccube/data/class/SC_DbConn.php on line 141 PHP Fatal error: Call to undefined method DB_Error::getCol() in /パス/eccube/data/class/SC_DbConn.php on line 139 suEXEC mechanism enabled (wrapper: /usr/local/apache2 Apache/2.2.11 (Unix) DAV/2 PHP/5.2.9 with Suhosin-Patch mod_ssl/2.2.11 OpenSSL/0.9.7m mod_apreq2-20051231/2.6.0 mod_perl/2.0.3 Perl/v5.8.7 configured -- resuming normal operations

  • postgreSQLをmySQLに変えたい

    postgreSQL用に書かれたデータベースをmySQL用に変えようと思っているのですが、登録のとき表示がでません。 ファイルは下記に入ってます。 http://briefcase.yahoo.co.jp/bc/sinema617/lst?&.dir=/5c56&.src=bc&.view=l touroku.sql postgreSQL用に書かれたので設定が違うのでしょうか? ktouroku.php ↑は表示され、送信されます。 ktouroku2.php 「ktouroku.php」の送信が押されると「ktouroku2.php」が表示されるのですが、表示されません。白い画面になります。 require('./include/init.inc'); のrequire を消すと表示されます。 送信されると一旦「init.inc」に格納されるのですが、中を見る限り 格納されていません。 実際表示画面です。 http://comet.mdg.human.nagoya-u.ac.jp/~mdg/dblist/ktouroku.php よろしくお願いします。