메인 콘텐츠로 건너뛰기

영향을 받는 데이터베이스 확인

Database 패널에서 문제가 개발 환경에 영향을 주는지 프로덕션 환경에 영향을 주는지 확인하세요. 실패한 요청을 실행하는 환경과 비교해 보세요. 개발 및 프로덕션 데이터베이스를 참조하세요. 일치하는 사고가 있는지 Replit Status를 확인하세요. 연결 오류만으로 장애라고 단정하지 마세요.

”The endpoint has been disabled”

  1. 해결되지 않은 청구 문제나 사용량 제한이 있는지 확인하세요.
  2. Database 패널을 열고 영향을 받는 환경을 선택하세요.
  3. Unpause database를 사용할 수 있다면 선택한 다음 연결을 다시 시도하세요.
  4. 컨트롤이 없다면 수동으로 구성한 DATABASE_URL이 패널에 표시된 데이터베이스와 다른 데이터베이스를 가리키는지 확인하세요.
연결 설정은 비공개로 비교하세요. 전체 연결 문자열을 출력하거나 공유하지 마세요. 의도적으로 구성한 외부 데이터베이스 설정을 제거하지 마세요. 일시 중지 해제가 실패하거나 컨트롤이 계속 보이지 않으면 환경, 오류, 시도한 단계와 함께 지원팀에 문의하세요. 반복적인 재시작은 일시 중지된 데이터베이스를 조사하는 것을 대체할 수 없습니다.

Preview는 연결되지만 게시된 앱은 연결되지 않는 경우

특히 복원이나 마이그레이션 이후에는 게시된 앱의 프로덕션 시크릿과 데이터베이스 구성을 확인하세요. 워크스페이스 시크릿만으로는 프로덕션 연결이 검증되지 않습니다. Publishing에서 Adjust settings와 프로덕션 시크릿을 검토하세요. 앱이 DATABASE_URL과 개별 PostgreSQL 변수를 모두 사용한다면 둘이 의도한 같은 데이터베이스를 가리키는지 확인하세요. 의도한 구성을 저장하고 게시한 다음, 쓰기를 테스트하기 전에 읽기를 먼저 확인하세요. 프로덕션 자격 증명을 프런트엔드 코드나 공개 리포지토리에 복사하지 마세요.

테이블이나 레코드가 누락된 경우

먼저 앱이 어느 데이터베이스를 읽고 있는지 확인하세요. 비어 있는 개발 데이터베이스나 다른 연결 대상 때문에 데이터가 손실된 것처럼 보일 수 있습니다. 최근 마이그레이션이 테이블 이름이나 스키마를 변경했는지 확인하세요. 앱 코드를 게시했다고 해서 개발 레코드가 프로덕션으로 복사된 것은 아닙니다. 진단 단계로 초기화를 실행하거나, 테이블을 삭제하거나, 개발 데이터를 프로덕션 위에 복사하지 마세요.

지원되지 않는 데이터베이스 객체

Replit은 두 시점에 Drizzle ORM의 마이그레이션 도구인 drizzle-kit을 사용해 데이터베이스를 관리합니다.
  • 개발 중에는 Agent가 Drizzle 스키마 파일을 업데이트하고 drizzle-kit을 실행해 개발 데이터베이스에 적용합니다.
  • 게시할 때는 Replit이 개발 데이터베이스와 프로덕션 데이터베이스를 비교하고, 프로덕션을 최신 상태로 만드는 데 필요한 SQL을 생성합니다. 스키마 파일이 아니라 데이터베이스 자체를 비교합니다.
drizzle-kit은 Drizzle 스키마로 표현할 수 있는 항목, 즉 테이블, 열, 인덱스, 제약 조건, enum, 시퀀스, 뷰, 행 수준 보안 정책만 처리합니다.

지원되지 않음

다음 객체는 Drizzle 스키마에 포함되지 않으므로 drizzle-kit이 개발 환경에서 비교하거나 생성할 수 없으며, 게시할 때도 프로덕션으로 복사되지 않습니다.
  • 도메인: CREATE DOMAIN으로 만든 커스텀 타입.
  • 함수, 프로시저, 트리거.
  • 권한(grant): GRANT로 부여한 테이블 권한.

제한적 지원: 역할

Drizzle에서 역할을 선언할 수는 있지만 지원은 제한적입니다. 따라서 게시할 때 역할을 생성, 변경, 제거하지 않습니다.

SQL로 만든 객체

위의 지원되지 않는 객체는 SQL 콘솔에서 수동으로 만들 수 있으며, Agent도 개발 데이터베이스에서 SQL을 직접 실행할 수 있습니다. 이러한 객체는 개발 환경과 Preview에서는 작동하지만, 지원되지 않는 객체는 게시할 때 프로덕션으로 복사되지 않습니다.

객체가 지원되지 않을 때 발생하는 일

테이블, 뷰, 기본값, 정책이 이러한 객체 중 하나에 의존하는 경우, 게시가 데이터베이스 마이그레이션 단계에서 다음과 같은 오류와 함께 중단됩니다.
  • function my_function(text) does not exist
  • type "my_domain" does not exist
  • role "app_user" does not exist
Replit은 실패한 마이그레이션을 롤백하므로 프로덕션 데이터베이스는 변경되지 않습니다. 트리거와 권한은 보통 오류를 일으키지 않습니다. 게시는 성공하지만 게시된 앱이 Preview와 다르게 동작할 수 있습니다. 예를 들어 타임스탬프를 업데이트하는 트리거는 프로덕션에서 실행되지 않습니다. 두 경우 모두 프로덕션에서 누락된 항목을 찾고 프로덕션에 적용한 다음 다시 게시하세요.

프로덕션에서 누락된 항목 찾기

Agent는 프로덕션 데이터베이스에 대한 읽기 전용 접근 권한이 있으므로 이 비교를 대신 실행할 수 있습니다. 누락된 객체를 프로덕션에 적용하기의 프롬프트를 참조하세요. 직접 확인하려면 SQL console에서 두 데이터베이스에 동일한 읽기 전용 쿼리를 실행한 다음 결과를 비교하세요.
개발 환경에만 나타나는 항목은 프로덕션에 적용해야 합니다. 일부 역할은 Replit이 생성하며 두 데이터베이스 간에 다를 수 있습니다. 앱의 정책이나 권한이 사용하는 역할만 있으면 됩니다.

누락된 객체를 프로덕션에 적용하기

고급: 이 단계는 함수, 트리거, 역할처럼 게시할 때 옮겨지지 않는 객체를 추가하기 위해 라이브 프로덕션 데이터베이스에서 SQL을 직접 실행합니다. SQL을 수동으로 실행하는 것은 지원되지 않는 방식이라 제한적으로만 도와드릴 수 있으므로, SQL 작업에 익숙한 경우에만 권장합니다.먼저 데이터 복구에서 선택지를 검토하고, 앱의 트래픽이 적을 때 변경 사항을 적용하세요.
  1. Agent에게 데이터베이스를 비교하고 누락된 항목에 대한 스크립트를 작성하도록 요청하세요. 프로젝트의 Agent에 다음 프롬프트를 붙여넣으세요. Agent는 프로덕션 데이터베이스를 읽을 수는 있지만 변경할 수는 없으므로, 스크립트는 다음 단계에서 직접 실행합니다.
  2. Database 도구에서 프로덕션 데이터베이스를 선택하고 My Data를 연 다음 Enable Editing을 켜세요.
  3. **SQL console**을 열고 스크립트를 실행하세요.
  4. Enable Editing을 끈 다음 다시 게시하세요.
게시해도 이러한 객체는 제거되지 않으므로 이후 게시에서도 그대로 유지됩니다. 스크립트를 프로젝트에 보관하고, 개발 환경에서 이러한 객체를 추가하거나 변경할 때마다 다시 실행하세요.

데이터가 삭제되었거나 덮어써진 경우

복구를 평가하는 동안 영향을 받는 데이터에 대한 불필요한 쓰기를 중지하세요. 복원하면 더 최신 데이터가 대체될 수 있습니다. 복구 작업을 확정하기 전에 현재 상태를 보존하고 범위를 파악하세요.
영향을 받는 환경, 정상이었던 마지막 시점의 대략적인 시각과 시간대, 변경된 내용을 기록하세요. 해당 데이터베이스에 표시되는 복구 옵션과 사용 가능한 기록을 확인하세요. 보존 기간과 복구 방법은 데이터베이스와 구성에 따라 다르므로, 이전 시점이 복구 가능하다고 가정하지 마세요. 데이터 복구의 데이터베이스별 지침을 사용하세요. 앱 코드를 롤백하면 프로덕션 데이터도 복원된다고 가정하지 마세요. 안전한 복구 경로를 찾을 수 없다면 지원팀에 문의하세요. 복구는 보장되지 않으며, 보존 기간을 늘려도 보관되지 않은 기록을 다시 만들 수는 없습니다.

자격 증명이 노출되었을 수 있는 경우

공유된 자료에서 노출된 값을 제거하세요. 지원되는 프로덕션 데이터베이스라면 Database 도구에서 자격 증명을 재생성하세요. 먼저 자격 요건과 중단 경고를 검토하세요. 외부 클라이언트를 새 연결 문자열로 업데이트하세요. 해당 작업을 사용할 수 없다면 지원팀에 문의하세요. 자격 증명을 교체하려고 데이터베이스를 삭제하지 마세요.

지원팀을 위한 세부 정보

프로젝트 URL, 환경, 민감 정보를 제거한 오류, 시간대를 포함한 시각, 최근 마이그레이션 또는 복원, 이미 완료한 점검을 포함하세요. 데이터베이스 자격 증명, 전체 연결 문자열, 고객 레코드는 포함하지 마세요. 지원 체크리스트를 참조하세요.