- PR -

レコードの追加(PostgreSQL)について

1
投稿者投稿内容
tk919
会議室デビュー日: 2005/09/03
投稿数: 13
投稿日時: 2005-09-03 15:42

初めて投稿させていただきます。

redhat7.3にpostgresql-7.3.3をインストールいたしました。

データベースとテーブルを作成後にレコードを追加しようとしたのですが、
エラーが表示されて上手くいきません。。。

文字コードをunicodeにしたので、utf-8対応のエミュレータ(putty)も
使用してみましたが、結局上手くいきませんでした。。

詳しくは以下をご参照下さい↓(実施した内容)


◆文字コードをUnicodeとしてデータベースを作成
bash-2.05a$ createdb -E UNICODE sampledb
CREATE DATABASE

◆「keijiID」というシーケンス(初期値1)を作成
sampledb=# CREATE SEQUENCE keigiid START 1;
CREATE SEQUENCE

◆作成したシーケンスとテーブルを確認
sampledb=# \d
List of relations
Schema | Name | Type | Owner
--------+---------+----------+----------
public | keigiid | sequence | postgres
public | keiji | table | postgres
(2 rows)


◆テーブルの構造を確認
sampledb-# SELECT \d keiji

Table "public.keiji"
Column | Type | Modifiers

-----------+-----------------------------+--------------------------------------
-----------------------
id | integer | not null default nextval('KeijiID'::t
ext)
name | character varying(255) | not null
email | character varying(255) |
title | character varying(255) | not null
body | character varying(2048) | not null
writedate | timestamp without time zone | not null default ('now'::text)::times
tamp(6) with time zone
host | character varying(255) |
Indexes: keiji_pkey primary key btree (id)


◆テーブルにレコードを追加 ⇒ エラーとなってしまいます。。。
sampledb=# insert into keiji (name, title, body)
sampledb-# values ('掲示板テスト' '掲示板サンプル' '掲示板のテストです');
ERROR: parser: parse error at or near "'掲示板サンプル'" at character 62


◆テーブルにレコードを追加(putty使用) ⇒エラーとなってしまいます。。。
sampledb=# insert into keiji (name, title, body)
sampledb-# values ('掲示板テスト' '掲示板のサンプル' '
sampledb'# 掲示板のテストです');
ERROR: parser: parse error at or near "'掲示板のサンプル'" at character 68
※実際には2バイト文字は画面上には表示されていません

こんな具合です。

何がいけないのでしょうか?
どなたがご教授下さい。宜しくお願い申し上げます。


せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2005-09-03 23:19
「,」忘れていませんか?


sampledb-# values ('掲示板テスト' , '掲示板サンプル' , '掲示板のテストです');
tk919
会議室デビュー日: 2005/09/03
投稿数: 13
投稿日時: 2005-09-04 00:33
せんさん

ご返答誠にありがとうございます。

ご指摘の通り、「,」を忘れていましたので、
以下の通り実行いたしました。

sampledb=# insert into keiji (name, title, body)
sampledb-# values ('掲示板テスト', '掲示板サンプル', '掲示板サンプル');
sampledb'#

「;」を入力して本人は、コマンドの入力は終了したつもりでしたが、
コマンドの入力待ちとなっているのです。。。

そこでまた以下の通り入力したのですが、結局エラーが表示されます。。

sampledb'# ';
sampledb(# );
ERROR: parser: unterminated quoted string at or near "';
);" at character 100

ネットでいろいろ調べましたが??です。。

ご教授の程、宜しくお願い申し上げます。










せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2005-09-04 02:05
引用:

sampledb'#


上記から、「'」(単一引用符)が抜けていると思われます。
こちらのページに記述してある、sql文をコピペする限りは insert は正常に実行されますので、
再度実行している sql文を見直すか、こちらに書いてある sql文をコピペしてみてください。
tk919
会議室デビュー日: 2005/09/03
投稿数: 13
投稿日時: 2005-09-04 23:52
せんさん

>こちらのページに記述してある、sql文をコピペする限りは insert は正常に実行され
>ますので、
>再度実行している sql文を見直すか、こちらに書いてある sql文をコピペしてみて
>ください。

上記でいうこちらのsql文というのは、私が記述したものでしょうか?
それとも、せん様が記述して下さったものでしょか?

私のものは、エラーが表示されたものをそのままコピーしたものです。
せん様から教えて頂いたものをコピペして実行致しましたが、
以下の通りの結果となってしまいました。

sampledb=# insert into keiji (name, title, body)
sampledb-# values ('掲示板テスト' , '掲示板サンプル' , '掲示板のテストです');
ERROR: Invalid UNICODE character sequence found (0xc800)

やっぱり、文字コードをunicodeにしたのがいけないのでしょうか?
せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2005-09-05 00:26
[quote]
tk919さんの書き込み (2005-09-04 23:52) より:

上記でいうこちらのsql文というのは、私が記述したものでしょうか?
それとも、せん様が記述して下さったものでしょか?
[/quote]
ごめんなさい。混乱させたようですが、tk919 さんが記述したものです。

[quote]
sampledb=# insert into keiji (name, title, body)
sampledb-# values ('掲示板テスト' , '掲示板サンプル' , '掲示板のテストです');
ERROR: Invalid UNICODE character sequence found (0xc800)
[/quote]

実行環境によるのだとおもいますが、

上記 SQLを「EUC_JP」なターミナルでコピペすると、同様なエラーが発生します。
「UNICODE( UTF-8 )」なターミナルでコピペすると、正常に登録されます。

この辺はどうでしょうか?
tk919
会議室デビュー日: 2005/09/03
投稿数: 13
投稿日時: 2005-09-05 00:49
せんさん

ご返答誠にありがとうございます。

> 上記 SQLを「EUC_JP」なターミナルでコピペすると、同様なエラーが発生します。
>「UNICODE( UTF-8 )」なターミナルでコピペすると、正常に登録されます。

>この辺はどうでしょうか?

ありがとうございます。
確かに、UTF対応のターミナルでコピペをしたら登録はされました。

しかし、画面上には日本語で入力した文字は表示されないのです。
よって、
#SELECT * FROM keiji;
と入力しても、画面上には、文字スペースがあるのみで
文字自体は表示されないのです。。。

これは、私が使っているターミナル(putty)の問題かもしれません。

差し支えなければ、せん様が使用されているターミナルを
教えていただけないでしょうか?

何卒、宜しくお願い申し上げます。







1

スキルアップ/キャリアアップ(JOB@IT)