최근에 테이블 이름 바꾸기를 지원하지 않는 데이터베이스 공급자의 몇 가지 제한 사항을 처리해야 했습니다. 그래서 테이블을 수동으로 복제해야 했습니다.
내 SaaS 플랫폼의 데이터베이스는 Planetscale에서 호스팅됩니다. 이 회사는 MySQL 호환 서버리스 데이터베이스를 제공합니다. 서버리스 특성 덕분에 수평 샤딩, 비차단 스키마 변경 및 더 많은 강력한 데이터베이스 기능을 구현하는 데 어려움을 겪지 않고도 얻을 수 있습니다. 그리고 훌륭한 개발자 경험을 제공합니다.
다른 관점에서 보면 스키마 변경과 관련된 일부 제약 조건을 처리해야 합니다. 이러한 제한은 샤딩된 환경에서 일관성을 보장하는 데 필요합니다.
고객이 된 이후(거의 2년 전) 외래 키 제약 조건 지원과 같이 많은 발전을 이루었습니다: https://planetscale.com/docs/concepts/foreign-key-constraints
Inspector는 Laravel 애플리케이션입니다. Laravel 마이그레이션을 사용하면 이름 바꾸기 기능을 사용하여 간단히 테이블 이름을 변경할 수 있습니다.
Schema::rename('from', 'to');
Planetscale은 기본적으로 테이블 이름 바꾸기를 지원하지 않습니다. 그래서 작업을 수행하기 위한 해결 방법을 찾아야 했습니다.
솔직히 말하면 테이블 이름을 바꾸는 것은 매우 드문 작업입니다. 나에게는 "프로젝트"와 "애플리케이션" 엔터티 사이의 이름이 겹치기 때문이었습니다. 프로젝트 -> 애플리케이션의 이름을 바꿔야 했습니다.
MySQL에서 테이블을 복제하는 방법에는 두 가지가 있습니다.
CREATE TABLE … LIKE:
를 사용하여 데이터 없이 테이블 구조(열, 키, 인덱스 등)만 복제할 수 있습니다.
CREATE TABLE applications LIKE projects;
결과적으로 원본 프로젝트 테이블과 구조가 완전히 동일하지만 데이터가 없는 애플리케이션 테이블이 생성됩니다.
데이터를 가져오려면 INSERT INTO … SELECT:
로 두 번째 문을 실행할 수 있습니다.
INSERT INTO applications SELECT * FROM projects;
이 명령문을 큰 테이블에서 실행하는 데는 시간과 서버 리소스가 많이 소요될 수 있으므로 주의하세요.
두 번째 옵션은 CREATE TABLE … AS SELECT:
를 사용하여 열 정의만 복제하고 하나의 문으로 데이터를 가져오는 것입니다.
CREATE TABLE applications AS SELECT * FROM projects;
새 애플리케이션 테이블은 프로젝트 테이블의 기본 열 정의만 상속합니다. 외래 키 제약 조건, 인덱스 및 auto_increment 정의를 복제하지 않습니다.
이 옵션은 테이블 이름과 관련된 인덱스 및 키 이름이 있을 때 유용할 수 있습니다. 테이블 이름을 변경하면 제약 조건의 이름을 바꿔야 합니다. 전혀 가져오지 않고 다시 수행하는 것이 좋습니다.
데이터베이스는 어느 단계에서나 항상 개발자들에게 뜨거운 주제입니다. 블로그에서 다른 기술 자료를 찾아보실 수 있습니다. 다음은 해당 주제에 대한 가장 인기 있는 기사입니다.
Inspector는 소프트웨어 개발자를 위해 특별히 설계된 코드 실행 모니터링 도구입니다. 서버 수준에서 아무것도 설치할 필요가 없습니다. composer 패키지만 설치하면 바로 사용할 수 있습니다.
다른 복잡한 올인원 플랫폼과 달리 Inspector는 매우 쉽고 PHP 친화적입니다. Laravel 또는 Symfony 패키지를 사용해 볼 수 있습니다.
효과적인 자동화, 심층적인 통찰력, 경고 및 알림을 메시징 환경으로 전달하는 기능을 찾고 있다면 Inspector를 무료로 사용해 보세요. 계정을 등록하세요.
또는 웹사이트에서 자세한 내용을 알아보세요: https://inspector.dev
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3