개요
DrawDB는 완전히 브라우저에서 실행되는 무료이고 간단하며 직관적인 데이터베이스 엔티티 관계 다이어그램(ERD) 편집기입니다. 회원 가입 없이 다이어그램 작성, SQL 스크립트 생성, 마이그레이션 내보내기가 가능하며 PostgreSQL, MySQL, SQLite 등 다양한 데이터베이스를 지원합니다.
README 미리보기
\n Special thanks to:\n \n \n \n \n Next-gen AI-powered intelligent terminal for all platforms\n \n\n\n\n\n\n\n \n drawDB\n\n\nFree, simple, and intuitive database schema editor and SQL generator.\n\n\n \n \n \n \n \n \n \n \n \n\n\n\n\nDrawDB is a robust and user-friendly database entity relationship diagram (ERD) editor right in your browser. Build diagrams with a few clicks, export and import SQL scripts, generate migrations, customize your editor, and more without creating an account. See the full set of features on [here](https://drawdb.app/).\n\n## Getting Started\n\n### Local Development\n\n```bash\ngit clone https://github.com/drawdb-io/drawdb\ncd drawdb\nnpm install\nnpm run dev\n```\n\n### Build\n\n```bash\ngit clone https://github.com/drawdb-io/drawdb\ncd drawdb\nnpm install\nnpm run build\n```\n\n### Docker Build\n\n```bash\ndocker build -t drawdb .\ndocker run -p 3000:80 drawdb\n```\n\nIf you want to enable sharing, set up the [server](https://github.com/drawdb-io/drawdb-server) and environment variables according to `.env.sample`. This is optional unless you need to share files.\n\n## Contributing\n\nPlease see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to contribute to this project.\n\n## Support\n- Join discussions: [Discord](https://discord.gg/BrjZgNrmR6)\n
FAQ (4)
문제 해결왜 DrawDB Docker는 VITE_BACKEND_URL을 무시하고 /diagrams/undefined/gists로 post 요청을 보내나요?
Vite는 빌드 시점에 import.meta.env.VITE_BACKEND_URL을 치환하므로, 이전 버전의 DrawDB 이미지는 docker run에서 -e VITE_BACKEND_URL=...을 읽을 수 없습니다. 런타임 구성 수정이 포함된 이미지로 업데이트한 다음 새 컨테이너를 시작하세요:
docker pull ghcr.io/drawdb-io/drawdb:latest
docker run -d --name drawdb \
-p 3024:80 \
-e VITE_BACKEND_URL=https://api.example.com \
ghcr.io/drawdb-io/drawdb:latest
백엔드 origin은 끝에 슬래시 없이 사용하세요. 시작한 후에는 캐시된 구성을 피하기 위해 브라우저를 강력 새로고침(Ctrl+Shift+R)하세요. DevTools에서 Share/Gist 요청이 http://localhost:3024/editor/diagrams/undefined/gists 대신 https://api.example.com/diagrams/.../gists로 향해야 합니다.
Docker Compose에 해당하는 설정:
services:
drawdb:
image: ghcr.io/drawdb-io/drawdb:latest
ports:
- "3024:80"
environment:
VITE_BACKEND_URL: https://api.example.com
수정이 적용되지 않은 이전 이미지에서는 컨테이너 런타임에만 변수를 설정해도 효과가 없기 때문에, 이미지 빌드 중에 변수가 존재해야 합니다. 예를 들어 docker build를 실행하기 전에 .env에 변수를 추가하는 방식입니다.
문제 해결커서가 경계 밖으로 이동할 때 컬러 피커가 닫히는 문제를 해결하는 방법은 무엇인가요?
외부 ColorPicker 래퍼에서 onMouseLeave 이벤트 핸들러를 제거하세요. 예를 들어, 래퍼 div에서 onMouseLeave={handleColorPick}을 삭제하세요. 피커는 색상을 선택하는 동안 마우스가 일시적으로 경계를 벗어났을 때가 아니라, 실제 외부 클릭이 발생할 때만 닫혀야 합니다.
문제 해결drawDB에서 enum 하나만 이름을 변경하거나 편집했는데 왜 가져온 PostgreSQL enum이 모두 변경되나요?
이 문제는 가져온 PostgreSQL enum 객체에 고유 ID가 부여되지 않아 발생하며, 이로 인해 drawDB가 편집 중에 이들을 동일한 객체로 처리했습니다. 이 문제는 fromPostgres 가져오기 함수에서 각 enum이 생성될 때 고유 ID를 추가하여 수정되었습니다. 예: enums.push({ id: nanoid(), name, values }). drawDB를 issue #1141에 대한 수정이 포함된 릴리스로 업데이트하세요. 셀프 호스팅하는 경우, fromPostgres의 PostgreSQL enum 생성 단계를 패치하여 가져온 모든 enum에 대해 nanoid()를 호출하도록 하세요.
문제 해결drawdb.app에서 'TypeError: n is not iterable' 오류와 함께 빈 홈페이지가 표시되는 문제를 어떻게 해결할 수 있나요?
이 문제는 브라우저별 문제가 아니라 drawdb의 프로덕션 JavaScript 버그였으며, Chrome, Firefox, Edge, Safari, Vivaldi 모두에 영향을 미쳤습니다. 메인테이너가 수정 사항을 배포했습니다. 사이트가 여전히 빈 화면으로 표시되면 Ctrl+F5(Windows/Linux) 또는 Cmd+Shift+R(macOS)로 최신 에셋을 강제로 새로고침하거나, 캐시된 사이트 데이터를 삭제하거나, 시크릿/프라이빗 창을 사용해 보세요. 셀프 호스팅 인스턴스의 경우 최신 drawdb 릴리스/이미지로 업데이트한 후 다시 빌드하거나 재시작하세요. 예를 들면: docker compose pull && docker compose up -d.