> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 공유 데이터베이스를 사용하는 게시된 앱 수정하기

> 다른 앱을 위해 원래 만들어진 데이터베이스를 여전히 사용하는 게시된 앱을 업데이트하기 위한 단계별 안내입니다.

일부 오래된 게시된 앱은 원래 다른 앱을 위해 만들어진 개발 데이터베이스에 여전히 연결되어 있을 수 있습니다.

이는 Replit에서 포크되거나 리믹스된 오래된 앱에서 발생할 수 있습니다. 레거시 Neon 설정에서는, 포크가 원본 앱의 데이터베이스 연결을 계속 사용할 수 있었습니다. Replit이 개발과 프로덕션 데이터베이스를 완전히 분리하는 방향으로 나아가면서, 오래된 공유 개발 데이터베이스는 제거되며 게시된 앱은 자체 프로덕션 데이터베이스로 이전해야 합니다.

게시된 앱에서 데이터베이스 연결 오류가 표시되거나, Secrets 패널의 `DATABASE_URL`이 여전히 `neon.tech`를 가리키고 있다면 이 가이드를 사용하세요.

<Warning>
  이전 공유 데이터베이스는 **2026년 6월 8일**에 종료될 예정입니다. 다운타임이나
  영구적인 데이터 손실을 피하려면 그 전에 게시된 앱을 업데이트하세요.
</Warning>

## 시작하기 전에

게시된 앱에는 자체 **프로덕션 데이터베이스**가 필요합니다. **Database** 패널에 표시되는 개발 데이터베이스는 게시된 앱에서 직접 사용해서는 안 됩니다.

<Frame>
  <img src="https://mintcdn.com/replit/H6PTzEDJVUtYAyiB/images/databases/shared-database-migration/dev-database.png?fit=max&auto=format&n=H6PTzEDJVUtYAyiB&q=85&s=15160429e896e92a599e328a7f76d0eb" alt="Development 데이터베이스를 보여주는 데이터베이스 패널" width="955" height="767" data-path="images/databases/shared-database-migration/dev-database.png" />
</Frame>

이를 해결하려면 먼저 어떤 상황에 해당하는지 파악하세요.

* **경우 1:** 필요한 데이터가 앱의 **Database** 패널에 이미 존재합니다.
* **경우 2:** 게시된 앱이 여전히 이전 공유 개발 데이터베이스를 사용하고 있어서 **Database** 패널에 필요한 데이터가 표시되지 않습니다.

## 게시된 앱이 공유 데이터베이스를 사용하고 있는지 어떻게 알 수 있나요?

다음 중 하나라도 해당된다면 게시된 앱이 영향을 받고 있는 것입니다.

* 데이터베이스 업그레이드 후 게시된 앱에서 데이터베이스 연결 오류가 표시됨
* 앱이 **2026년 1월 9일 이전에** 데이터베이스가 있던 다른 앱에서 리믹스됨

## 게시된 앱이 소스 앱의 공유 데이터베이스를 사용하고 있는지 확인하는 방법

### 1단계: 소스 앱에서 Database 패널 열기

<Frame>
  <img src="https://mintcdn.com/replit/LrPHebhkEtjoxAa5/images/databases/shared-database-migration/secret-pane-showing-secrets.png?fit=max&auto=format&n=LrPHebhkEtjoxAa5&q=85&s=4989ebfbb1cbe88ed696c9f46b306504" alt="DATABASE_URL을 보여주는 Secret 패널" width="792" height="418" data-path="images/databases/shared-database-migration/secret-pane-showing-secrets.png" />
</Frame>

`NEON_DATABASE_URL`에서 값을 가져오거나, `NEON_DATABASE_URL`이 없다면 `DATABASE_URL`에서 가져오세요.

<Info>
  영향을 받는 모든 앱에 `NEON_DATABASE_URL`이 있는 것은 아닙니다. 이 값이
  없다면, 대개 게시된 앱의 Secrets에서 현재 `DATABASE_URL`이 여전히
  `neon.tech`를 가리키고 있는지 확인해야 한다는 의미입니다.
</Info>

### 2단계: 게시된 앱에서 Publish 패널 열기

<Frame>
  <img src="https://mintcdn.com/replit/LrPHebhkEtjoxAa5/images/databases/shared-database-migration/production-app-secrets.png?fit=max&auto=format&n=LrPHebhkEtjoxAa5&q=85&s=e640bd643913a6e91cf2c1121cb0b466" alt="DATABASE_URL을 보여주는 게시된 앱 시크릿" width="1385" height="1225" data-path="images/databases/shared-database-migration/production-app-secrets.png" />
</Frame>

게시된 앱의 데이터베이스 URL을 확인하려면:

1. Replit에서 앱을 여세요
2. **Publishing** 패널을 여세요
3. **Adjust Settings**를 여세요
4. **Secrets**를 여세요
5. `DATABASE_URL`을 찾으세요

### 3단계: 1단계의 소스 앱 데이터베이스 URL과 2단계의 리믹스 앱을 비교하기

두 URL이 같다면, 게시된 앱은 소스 앱의 공유 Neon 개발 데이터베이스를 사용하고 있는 것입니다.

## 소스 앱에서 게시된 앱으로 데이터를 복사하는 방법

게시된 앱이 소스 앱의 공유 개발 데이터베이스를 사용하고 있음을 확인한 후, 다음 단계는 필요한 데이터를 게시된 앱으로 전송하는 것입니다. 고려해야 할 두 가지 시나리오가 있습니다.

* 경우 1: 게시된 앱의 Database 패널에 이미 필요한 데이터가 있습니다.
* 경우 2: 게시된 앱의 Database 패널에 필요한 데이터가 없습니다.

### 경우 1: Database 패널에 이미 필요한 데이터가 표시됨

필요한 데이터가 앱의 **Database** 패널에서 이미 보인다면 가장 쉬운 방법입니다.

#### 1단계: 데이터가 있는지 확인하기

<Frame>
  <img src="https://mintcdn.com/replit/LrPHebhkEtjoxAa5/images/databases/shared-database-migration/my-data.png?fit=max&auto=format&n=LrPHebhkEtjoxAa5&q=85&s=18be81996751767ffdf44edc2b3b5fd8" alt="my data 행을 보여주는 데이터베이스 패널" width="865" height="454" data-path="images/databases/shared-database-migration/my-data.png" />
</Frame>

게시된 앱에서 **Database** 패널을 열고 필요한 테이블과 데이터가 있는지 확인하세요.

Database 패널에서 필요한 데이터가 보이지 않는다면 여기서 멈추세요. 데이터를 올바르게 마이그레이션하려면 [경우 2](#case-2-the-database-panel-does-not-show-the-data-you-need)의 단계를 따라야 합니다.

#### 2단계: 프로덕션 데이터베이스와 함께 게시 또는 재게시하기

1. Project Editor에서 앱을 여세요
2. **Publish** 또는 **Republish**를 선택하세요
3. **Create production database**를 켜세요
4. **Set up your production database with your current development data**를 켜세요
5. 게시 절차를 완료하세요

게시하면 게시된 앱의 새 버전이 생성되고, `DATABASE_URL`이 새 프로덕션 데이터베이스로 자동 설정됩니다. 이 과정에서 해당 시크릿을 수동으로 업데이트할 필요는 없습니다.

<Frame>
  <img src="https://mintcdn.com/replit/LrPHebhkEtjoxAa5/images/databases/shared-database-migration/production-database-settings.png?fit=max&auto=format&n=LrPHebhkEtjoxAa5&q=85&s=a5ca44635f062423aaa9c8d8b73753e3" alt="Create production database 옵션을 보여주는 게시 설정" width="1406" height="1207" data-path="images/databases/shared-database-migration/production-database-settings.png" />
</Frame>

<Warning>
  프로덕션으로 복사하면 기존 프로덕션 데이터가 덮어씌워집니다. 프로덕션
  데이터베이스를 복원하거나 관리하는 방법에 대한 자세한 내용은 [프로덕션
  데이터베이스](/ko/features/data-and-storage/production-databases)를
  참고하세요.
</Warning>

#### 3단계: 게시된 앱 확인하기

게시된 앱을 열고 데이터에 접근할 수 있는지, 앱이 올바르게 작동하는지 확인하세요.

### 경우 2: 게시된 앱의 Database 패널에 필요한 데이터가 표시되지 않음

게시된 앱의 **Database** 패널에서 필요한 데이터가 보이지 않는다면 다음 단계를 따라 데이터를 내보내세요.

게시된 앱이 여전히 다른 앱의 데이터베이스에 연결되어 있다면, Database 패널에 "external database detected" 경고가 표시됩니다.

<Frame>
  <img src="https://mintcdn.com/replit/LrPHebhkEtjoxAa5/images/databases/shared-database-migration/external-database-detected.png?fit=max&auto=format&n=LrPHebhkEtjoxAa5&q=85&s=e2599ba01a24923656e49ae221966485" alt="external database detected를 보여주는 데이터베이스 패널" width="1403" height="1208" data-path="images/databases/shared-database-migration/external-database-detected.png" />
</Frame>

<Warning>
  사람들이 여전히 앱을 사용하며 새 데이터를 저장하고 있다면, 데이터를 내보내기 전에
  짧은 유지보수 시간을 계획하세요.
</Warning>

#### 1단계: 이전 데이터베이스에서 데이터 내보내기

<Frame>
  <img src="https://mintcdn.com/replit/LrPHebhkEtjoxAa5/images/databases/shared-database-migration/pg-dump-example.png?fit=max&auto=format&n=LrPHebhkEtjoxAa5&q=85&s=aa1e5bf72df4cbb5c8162ed6cf85f594" alt="pg_dump 예시" width="1252" height="450" data-path="images/databases/shared-database-migration/pg-dump-example.png" />
</Frame>

Project Editor에서 **Shell**을 열고 다음을 실행하세요.

```bash theme={null}
pg_dump -Fc "database_url" --no-owner --no-privileges -f backup.dump
```

`database_url`은 [1단계: 소스 앱에서 Database 패널 열기](#step-1-open-the-database-panel-in-the-source-app)에서 얻은 데이터베이스 URL입니다.

### 2단계: 앱의 Secrets에서 이전 `DATABASE_URL` 제거하기

<Frame>
  <img src="https://mintcdn.com/replit/LrPHebhkEtjoxAa5/images/databases/shared-database-migration/secret-pane.png?fit=max&auto=format&n=LrPHebhkEtjoxAa5&q=85&s=255b88017d8b880a4e383c7c33a0b300" alt="secret 패널 예시" width="1410" height="1184" data-path="images/databases/shared-database-migration/secret-pane.png" />
</Frame>

1. Project Editor에서 **Secrets** 도구를 여세요
2. 이전 `DATABASE_URL`을 찾으세요
3. 삭제하세요
4. 페이지를 새로고침하거나 **Database** 패널을 다시 여세요

이 작업 후, 앱은 이전 공유 데이터베이스를 가리키지 않고 현재 개발 데이터베이스를 다시 사용하게 됩니다.

### 3단계: 앱의 현재 개발 데이터베이스로 데이터 가져오기

<Frame>
  <img src="https://mintcdn.com/replit/LrPHebhkEtjoxAa5/images/databases/shared-database-migration/pg-restore-example.png?fit=max&auto=format&n=LrPHebhkEtjoxAa5&q=85&s=a0c3faacffc9dabb3c5b1c5443467e76" alt="pg_restore 예시" width="802" height="426" data-path="images/databases/shared-database-migration/pg-restore-example.png" />
</Frame>

이전 `DATABASE_URL` 시크릿을 제거하면, 앱의 현재 개발 데이터베이스가 Project Editor에서 `$DATABASE_URL`로 다시 사용 가능해집니다.

Project Editor의 **Shell**로 돌아가서 다음을 실행하세요.

```bash theme={null}
pg_restore --clean --if-exists --single-transaction --no-owner --no-privileges --exit-on-error -d "$DATABASE_URL" backup.dump
```

이렇게 하면 내보낸 데이터가 앱의 현재 개발 데이터베이스로 로드됩니다.

### 5단계: 경우 1을 따라 프로덕션 데이터베이스와 함께 게시 또는 재게시하기

**Database** 패널에 올바른 데이터가 표시되면, [경우 1](#case-1-the-database-panel-already-shows-the-data-you-need)을 따라 **Create production database**와 함께 게시 또는 재게시하고 해당 데이터를 프로덕션으로 복사하세요.

### 6단계: 게시된 앱 확인하기

<Frame>
  <img src="https://mintcdn.com/replit/LrPHebhkEtjoxAa5/images/databases/shared-database-migration/successful-export.png?fit=max&auto=format&n=LrPHebhkEtjoxAa5&q=85&s=f1f982d43072c613f04661a9879da43f" alt="성공적인 내보내기" width="965" height="554" data-path="images/databases/shared-database-migration/successful-export.png" />
</Frame>

게시된 앱을 열고 데이터에 접근할 수 있는지, 앱이 올바르게 작동하는지 확인하세요.

## 문제 해결

### 테이블이 이미 존재하여 가져오기가 실패함

위의 `pg_restore --clean --if-exists` 명령은 복원하기 전에 덤프에서 일치하는 객체를 삭제하고 다시 만듭니다.

### role 또는 policy 오류로 가져오기가 실패함

데이터베이스가 커스텀 PostgreSQL 역할이나 역할 기반 정책을 사용한다면, 새 데이터베이스에 아직 해당 역할이 존재하지 않아 가져오기가 실패할 수 있습니다.

Replit의 자동 Helium 마이그레이션은 복원 전에 역할 스텁을 재생성하려고 시도하지만, 위의 수동 프로세스는 그렇지 않습니다. `pg_restore` 중 역할 관련 오류가 발생하면 [지원팀에 문의](https://replit.com/support)하세요.

### 이미 앱을 수정했습니다

게시된 앱에 이미 자체 프로덕션 데이터베이스가 있고 올바르게 작동한다면 추가로 할 일이 없습니다.

## 더 도움이 필요하신가요?

앱에 어떤 경우가 적용되는지 확실하지 않거나 마이그레이션 중에 문제가 발생하면 [지원팀에 문의](https://replit.com/support)하세요.

## 관련 문서

* [데이터베이스 업그레이드](/ko/features/data-and-storage/database-upgrade)
* [프로덕션 데이터베이스](/ko/features/data-and-storage/production-databases)
* [Database](/ko/features/data-and-storage/sql-database)
