PostgreSQL 의 버전이 어떻게 되는지 모르겠군요. 대부분의 경우 2 byte 문자권에서 발생하는 pg_dump 의 버그입니다. 디비의 백업 자료중의 일부가 특수한 문자를 입력받은 후로는 psql 의 명령어 처럼 동작을 하는 현상입니다.
버그의 수정 방법은 일단 그 에러가 발생하는 레코드를 일단 제일 뒤에 입력하기로 하고 따로 복사를 해 두고 작업을 해 보는 방법입니다. 만약 그래도 에러가 발생한다면 디비 자료의 크기를 특정 사이즈로 짤라서 입력하는 방법도 있습니다. 이것은 pg_dump 에러 리스토어시 그 길이가 특정 사이즈 이상으로 될 경우 가끔 예상치 못한 에러가 발생하는 양상이 있습니다. 이런 버그는 7.0 버전대에서는 많이 감소되었습니다. 그래서 DBMS 의 버전을 물어 본것입니다. DBMS 의 버전을 7.0.2로 upgrade 시킬 필요가 있는 것입니다.
만약 첫번째 원인이라면 엄청난 노가다를 요할 것입니다. /./
::훈 님께서 쓰시길::
> 안녕하세요. 계속해서 좋은 사이트가 되기를 바라구요.
>
> 1대의 서버(a서버)에서 다른 서버(b서버)로 백업파일을 옮기는 도중에 에러가 납니다.
>
> a서버에서 pg_dump를 이용해서 백업을 했구요.
> postgres $> pg_dump kric > kric.db
>
> 백업파일(kric.db)를 b서버에 옮긴후에 복구를 했어요.
> postgres $> createdb kric
> postgres $> psql /d kric.db /e < kric.db
>
> 그런데, 일부만 복구가 되고, 아래와 같은 에러가 연속적으로 나옵니다.
>
> =================================에러 메시지==================================
>
> \! [<cmd>] // shell escape or command
> \9 2000/07/27 19:06:56 10421 플라스틱 토목건자재 배수로관
> >
>
> \? // help
> \a // toggle field/alignment (currently on)
> \C [<captn>] // set html3 caption (currently '')
> \connect <dbname|/> <user> // connect to new database (currently 'kric')
> \copy table {from | to} <fname>
> \d [<table>] // list tables and indices, columns in <table>, or * for all
> \da // list aggregates
> \dd [<object>]/ list comment for table, field, type, function, or operator.
> \df // list functions
> \di // list only indices
> \do // list operators
> \ds // list only sequences
> \dS // list system tables and indexes
> \dt // list only tables
> \dT // list types
> \e [<fname>] // edit the current query buffer or <fname>
> \E [<fname>] // edit the current query buffer or <fname>, and execute
> \f [<sep>] // change field separater (currently '|')
> \g [<fname>] [|<cmd>] // send query to backend [and results in <fname> or pipe]
> \h [<cmd>] // help on syntax of sql commands, * for all commands
> \H // toggle html3 output (currently off)
> \i <fname> // read and execute queries from filename
> \l // list all databases
> \m // toggle monitor/like table display (currently off)
> \o [<fname>] [|<cmd>] // send all query results to stdout, <fname>, or pipe
> \p // print the current query buffer
> \q // quit
> \r // reset(clear) the query buffer
> \s [<fname>] // print history or save it in <fname>
> \t // toggle table headings and row count (currently on)
> \T [<html>] // set html3.0 <table ...> options (currently '')
> \x // toggle expanded output (currently off)
> \w <fname> // output current buffer to a file
> \z // list current grant/revoke permissions
> \! [<cmd>] // shell escape or command
> Segmentation fault
>
> ==============================================================================
>
> 왜, 일부만 복구가 되고, 나머진 복구가 되지 않는 거죠?
|