INSERTができない

このQ&Aのポイント
  • PostgreSQLを使用してテスト中にINSERTができないエラーが発生しました。
  • テスト時に作成したデータベースでのINSERT文実行時にエラーが発生し、エンコーディングの問題が原因である可能性があります。
  • エラーメッセージによると、サーバーが期待するエンコーディングと一致しないバイトシーケンスが含まれているため、エラーが発生しているようです。
回答を見る
  • ベストアンサー

INSERTができない

現在、PostgreSQLを使用し、簡単なテストを しようと思っております。私は素人です。 ただ、下記の問題にぶち当たってます。 createdb --encoding EUC_JP test で「test」というDBを"EUC_JP"で作成 /var/lib/pgsql/data/postgresql.conf の client_encoding = EUC_JP を変更し、 posgre再起動。 INSERT INTO test VALUES (1,'山田太郎'); というINSERT文を投入したところ、下記エラーが発生。 ERROR: invalid byte sequence for encoding "EUC_JP": 0x8be9 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". これってどうなんでしょう。 申し訳ないですが素人の私に教えてください!! よろしくお願いいたします。

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

  • ベストアンサー
  • Hardking
  • ベストアンサー率45% (73/160)
回答No.1

Linuxのシステム文字コードは、EUCですか。 /etc/sysconfig/i18nファイルの1行目 LANG="ja_JP.eucJP"と設定されていなければ スーパーユーザーで設定変更する。 /etc/bashrcに環境変数を設定する。 export LANG="ja_JP.eucJP" 再ログインして、テーブルのINSERTを再試行してください。

hi_sta
質問者

お礼

早速のご回答ありがとうございます。 Hardkingさんに教えていただいたとおりにやったらできました。 ありがとうございました。

関連するQ&A

  • 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
  • データベースリストア時にエラーがー

    RedHatのPostgresql7.2.4で稼動しているデータベースhogehogeを windowsの8.2.4で稼動させようとしています。 最初にpgdumpでデータベースhogehogeを取り出し、それをwindowsからFFFTPで取得、 その後pgADMINIIIでリストアしようとしましたが、 データを選択しても実行ボタンがアクティブにならなかったので、 コマンドラインを使って createdb -U postgres --encoding=EUC_JP hogehoge psql -U postgres -e -f c:\files\hogehoge hogehoge としました。 すると psql:c:/files/hogehoge:181: ERROR: invalid byte sequence for encoding "SJIS": 0xf309 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". CONTEXT: COPY hogehoge_hage, line 1 というようなエラーがいくつか出てきます。 client_encodingをEUC_JPにしてみましたがやはり同じエラーが 出ました。 元のRedHatでのエンコードはEUC_JPになっています。 どなたか解決法をご存知の方がおられましたらご教授お願いします。

  • pg_queryでinsert処理が出来ない

    環境はxp、apache2、php5、Postgresql8.2です。 1台のPCをサーバ&クライアントにしています。 ただ今PHPとPostgresqlの勉強をしています。 phpiniの文字コードの設定 PHPプログラムをShift_JISで保存し、ブラウザへEUC-JPで出力する csvデータを「Book1」読み込んで、 bbというテーブルに格納するために 以下のようにしましたが エラーになってしまいます。 ご教示して頂けたら幸いです。 --------------------------- if($_POST['action'] && $_POST['sign'] == 'up') { //ファイルを開く $fd = fopen ("c:\Book1.csv", "r"); //データを読み込む while (!feof ($fd)) { //「,」区切りでデータを分割 $line = split(",",fgets($fd, 50)); //クエリの実行 $sql = "insert into bb (syain,name,buka) values ('\{$line[0]}\','\{$line[1]}\',{$line[2]})"; pg_query($d_base,$sql); } } --------------------------- 「Book1」の内容 001,山田,100 002,佐藤,200 003,斉藤,300 ・ ・ ・ --------------------------- エラー内容 Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid byte sequence for encoding "EUC_JP": 000002 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". in C:\aa.php on line 48 山田

    • ベストアンサー
    • PHP
  • PostgreSQLへのinsert処理

    PostgreSQLのinsert処理でエラーが発生します。 最初に作ったDBではうまくいっていたのですが、AccessからODBC接続した際に日本語の項目が文字化けしていたため、文字コードの問題かと思い、文字コードを「EUC_JP」で指定したDBとテーブルを作り直し、再度実行してみたところ、「PostgreSQL query failed: ERROR: Invalid EUC_JP character sequence found (0x8365)」というエラーが発生し、insert処理が実行されませんでした。insertする項目をバラけさせて確認したところ、日本語の内容の部分でエラーが発生していました。 Accessの文字化けの件と併せて調べていますが、原因が今ひとつ分かりません。どなたか回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • デフォルトのCLIENT_ENCODINGを変更したい

    データベース、またはPostgresql本体の CLIENT_ENCODING のデフォルトを設定するにはどうしたらよいでしょうか。 ご存知の方いらっしゃいましたら教えてください。 【現状】 Linux機にインストールしたPostgresqlのCLIENT_ENCODINGをSJISにしたいのですが、DBにconnectする毎に SET CLIENT_ENCODING 'SJIS'; することで対処していますが、出来ればソフト側ではなくDB側の設定で対処したいと考えています。 ■ デフォルト設定のWindowsとLinuxの差異 Windows:  サーバ:euc  CLIENT_ENCODING:sjis ※ Linux[centos4]:  サーバ:euc  CLIENT_ENCODING:euc ※ Windowsと同じ設定になるようにしたいです。   またはCREATEDBのオプションとかでそういうのがあると良いのですが。 PostgreSQLのversion:8.1.5

  • postgreSQLとの併用

    osにFreeBSD、PHP、postgrsqlを用いての画像データベースを作成しています。 画像は指定したディレクトリにきちんと保存されるのですが、それに付随するコメントがencoding errorで格納されません。 “". Execution failure ERROR: invalid byte sequence for encoding "SJIS": 0x8d27 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".” “Execution failure ERROR: character 0xefbc of encoding "SJIS" has no equivalent in "UTF8"” というエラー文が出ているのでpostgresql.confのclient_encoding部分を #client_encoding=sql_ascii ↓ client_encoding=SJIS のように変更しました。 しかし未だに同様のエラーが出ています。 「大本命」や「普通二輪免許」のような言葉は通りますが、「テスト文」や「紅一点」のような言葉は通りません。 試しに「$comment = mb_convert_encoding($comment, "UTF8", "SJIS");」 を組み込んでみましたが、その結果は変わりませんでした。 原因がわからず困っています。 どうかお力添えをお願いします。

    • ベストアンサー
    • PHP
  • Postgres:LinuxからWinへのDB移行

    LinuxのPostgres7.2からWindowsのPostgres8.3に DB移行を使用としています。DBは移行後もEUC_JPです。 【行った手順】 Linux ・pg_dump -F p DB > test.sql  FTP ・FTPクライアントソフトで、ファイルをWindowsマシンに転送 Win ・createdb -U postgres -h localhost -E EUC_JP DB ・psql -U postgres -h localhost DB ・windb=# \i C:/test.sql LinuxからDumpし、Winのコマンドプロンプトでtest.sqlを実行すると 下記のエラーが発生します。 invaild byte sequence for eoncoding "EUC_JP":0x8de5" 元のファイルも、移行先のDBもEUC_JPなのに、どうしてこのような エラーが発生するのでしょうか? どなたかお知恵をお貸し下さい。

  • pg_dumpでデータの引越し

    こんにちは。postgreSQL初心者です。 古いサーバからpostgreSQLのデータを pg_dumpもしくは、pg_dumpallで取り出し、新しいサーバに入れようとしてるのですが、以下のようなエラーが出てデータが入ってくれません。 ERROR: invalid byte sequence for encoding "UTF8": 0x8a HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". 文字コードの問題だと思うのですが、バージョンの違いや基本的な設定も関係あるのでしょうか? 環境 旧サーバ:Red hat Linux 9, postgreSQL 8.0 移転先サーバ:Fedora Core 6, postgreSQL 8.1 実行コマンド ダンプ pg_dump -d DB_NAME > FILE_NAME ※ファイルの中身はちゃんと出力されています。 リストア(?というのでしょうか?) 方法1: \i FILE_NAME > DB_NAME 方法2:cat FILE_NAME  | psql DB_NAME 両方ともエラーがでて、テーブルはできていても一部の中身が入りません。 行き詰まってしまっています。どうか宜しくお願いします。 また、現在設定されている文字コードを調べる方法や、お勧めの参考ホームページがございましたら教えてください。

  • psqlの文字コードエラー

    psqlでDBを作りたいのですが データを入力する際に、invalid byte sequence for encoding "EUC_JP"というエラーが出て日本語の入力ができません。 使用しているOSは Fedora Coreで 文字コードを UTP-8を変換しようとしています よろしくお願いします。

  • EUC_JPにない文字のshiftJISからの変換処理

    http://okwave.jp/qa757480.html ここにある質問と同じ状況になっています。 shiftJISの文字列をEUC_JPに変換したところ、 invalid byte sequence for encoding "EUC_JP" というエラーが出ました。 EUCにない文字なので変換が出来ないのはわかるのですが、ではその場合どのような処理が妥当でしょうか。 テキストデータから文字を取り込んでいるので最初から文字をEUC_JPやUTF-8で文字列を作ることができません。 EUCにない文字はどうやっても変換できないので代替文字もしくは記号を置くことで解決しようかと思ったのですが、そうするとどの文字がshiftJISにあってEUCにないかの一覧がないとどうしようもないかと思います。 この場合はどうするのが良いかアドバイスいただけませんでしょうか。

    • ベストアンサー
    • Perl