Etherpad-lite: ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์„ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ

์— ๋งŒ๋“  2020๋…„ 11์›” 12์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ether/etherpad-lite

๋ฒ„๊ทธ ์„ค๋ช…
๋ฐฑ์—”๋“œ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(postgres๋กœ ํ…Œ์ŠคํŠธ) ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋ฌธ์ œ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ๋ณด๊ณ ํ•˜๋Š” ๋Œ€์‹  ๊ณ„์† ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด
๋™์ž‘์„ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„:

  1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„ ์ค‘์ง€(postgres)
  2. ์ด๋”๋„ท ํŒจ๋“œ ์‹œ์ž‘
  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜์‹ญ์‹œ์˜ค(์ œ ๊ฒฝ์šฐ์—๋Š” /admin/plugins ๋ณผ ๋•Œ๋„ ํŒจ๋“œ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  4. ์˜ค๋ฅ˜ ๋ณด๊ธฐ

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™
์ผ๋ถ€ ํ”„๋ก ํŠธ์—”๋“œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋‹จ๊ณ„์  ํด๋ฐฑ์ด์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ด ๋ถ€์กฑํ•˜๋”๋ผ๋„ ๊ณ„์† ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ํ–‰๋™

[2020-11-12 22:13:05.858] [ERROR] console - error: column "value" is of type jsonb but expression is of type text
    at Parser.parseErrorMessage (/home/etherpad/etherpad-lite/src/node_modules/pg-protocol/dist/parser.js:278:15)
    at Parser.handlePacket (/home/etherpad/etherpad-lite/src/node_modules/pg-protocol/dist/parser.js:126:29)
    at Parser.parse (/home/etherpad/etherpad-lite/src/node_modules/pg-protocol/dist/parser.js:39:38)
    at Socket.stream.on (/home/etherpad/etherpad-lite/src/node_modules/pg-protocol/dist/index.js:8:42)
    at Socket.emit (events.js:198:13)
    at Socket.EventEmitter.emit (domain.js:448:20)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at Socket.Readable.push (_stream_readable.js:224:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
[2020-11-12 22:13:05.858] [INFO] console - Stopping Etherpad...
[2020-11-12 22:13:05.876] [ERROR] console - TypeError: Cannot read property 'name' of null
    at Client._handleParseComplete (/home/etherpad/etherpad-lite/src/node_modules/pg/lib/client.js:358:26)
    at Connection.emit (events.js:198:13)
    at Connection.EventEmitter.emit (domain.js:448:20)
    at parse (/home/etherpad/etherpad-lite/src/node_modules/pg/lib/connection.js:109:12)
    at Parser.parse (/home/etherpad/etherpad-lite/src/node_modules/pg-protocol/dist/parser.js:40:17)
    at Socket.stream.on (/home/etherpad/etherpad-lite/src/node_modules/pg-protocol/dist/index.js:8:42)
    at Socket.emit (events.js:198:13)
    at Socket.EventEmitter.emit (domain.js:448:20)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)

์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ

Etherpad version
Version number: 1.8.6
Latest available version: 1.8.6
Git sha: 6a8563e

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•„, ๋˜๋Œ๋ฆฐ ์ปค๋ฐ‹์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์–ผ๋งˆ ์ „์— ๊ด€๋ จ๋œ ๋‚˜์œ p ์ปค๋ฐ‹์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

+1 ์ด๊ฒƒ.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ถ”์ƒํ™” btw์— ๋Œ€ํ•œ https://github.com/ether/ueberDB . ์ด๊ฒƒ์€ PG๋งŒ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ชจ๋“  DB์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

PR์„ ์ˆ˜๋ฝํ•˜๊ณ  ์–ด๋””์—์„œ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. db๊ฐ€ ์†์‹ค๋  ๋•Œ ueberdb๊ฐ€ ๋ฐฉ์ถœ๋˜๋„๋ก ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์•„๋งˆ๋„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฒ„๋ธ”๋งํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๊ฒƒ์ด๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์ผ๋ฐ˜ ์˜ค๋ฅ˜, ๋ฐฑ์—”๋“œ ๋กœ๊ทธ์˜ ์˜ค๋ฅ˜ ์ง€์šฐ๊ธฐ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ณต์›๋  ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋ณต์›๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒˆ๋กœ์šด ๋…ผ๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹œํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„๋ณด๋‹ค ๋” ํฐ ์ž‘์—…์ผ ์ˆ˜ ์žˆ๋Š” ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅํ„ฐ์— ๋Œ€ํ•ด..

Etherpad๋Š” ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์ฃฝ๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Etherpad๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ๋งŒ๋“ค๋„๋ก ๊ฐ•์š”ํ•œ ์ดˆ๊ธฐ ์„ค๊ณ„ ๊ฒฐ์ •์ด์—ˆ์Šต๋‹ˆ๋‹ค. Etherpad์˜ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋Š” Etherpad๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  db ์—ฐ๊ฒฐ์„ ๋‹ค์‹œ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ผ์„ ํ•˜๋Š” ๋ฐฉ์‹์— ๋ฐ˜๋Œ€ํ•˜์ง€ ์•Š์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์—†์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— Etherpad๊ฐ€ ์‹คํŒจํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋ถ„๋ช…ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์—ฐ๊ฒฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. column <name> is of type jsonb but expression is of type text ๋Š” ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋‹ค์†Œ ํ”ํ•œ ์ผ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ด์€ JSONB๋กœ ์ƒ์„ฑ๋˜์ง€๋งŒ ์ฟผ๋ฆฌ ์ƒ์„ฑ๊ธฐ๊ฐ€ JSON.encode์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•  ๋•Œ ์œ ํ˜•์€ ๋ฌธ์ž์—ด๋กœ ์œ ์ถ”๋˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์œ ํ˜• TEXT ๋˜๋Š” VARCHAR(์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์˜ "๋ฌธ์ž ๊ฐ€๋ณ€")๋กœ ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค.
๋ถ„๋ช…ํžˆ ๊ทธ๊ฒƒ์€ ๋ฌธ์ž์—ด์ด๋‚˜ ๋ฐฐ์—ด์„ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด ๋Œ€์‹ ์— ๋ฌธ์ž์—ด์ด๋‚˜ ๋ฐฐ์—ด์„ ์ €์žฅํ•  ๋•Œ๋„ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จ์ด ์—†๋Š” Google์„ ํ†ตํ•ด ๋ฐœ๊ฒฌ๋œ ์ž„์˜์˜ ์˜ˆ: https://github.com/jeremydaly/data-api-client/issues/27#issuecomment -584701957

์•„, ๋˜๋Œ๋ฆฐ ์ปค๋ฐ‹์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์–ผ๋งˆ ์ „์— ๊ด€๋ จ๋œ ๋‚˜์œ p ์ปค๋ฐ‹์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์•Œ์•„์ฐจ๋ ธ์Šต๋‹ˆ๋‹ค. jsonb๊ฐ€ ํฌํ•จ๋œ CREATE TABLE์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉฐ node_modules์˜ ๋ฒ„์ „์€ ์ด๋ฏธ text ์ž…๋‹ˆ๋‹ค. FWIW์—๋Š” ํ…์ŠคํŠธ ์ธ์ˆ˜๊ฐ€ ์žˆ๋Š” ueberdb_insert_or_update() ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฒ„๋กœ๋“œ๋œ ํ•ญ๋ชฉ์ด ๋‚จ์•„ ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค...

๋ณ€ํ™˜ํ•˜๊ธฐ ์ „์— ํ…์ŠคํŠธ๊ฐ€ (ํ˜„์žฌ๋กœ์„œ๋Š”) ๊ทธ๋Œ€๋กœ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ALTER TABLE storage ALTER COLUMN value TYPE text USING value::text;
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰