Kürzlich musste ich mich mit einigen Einschränkungen meines Datenbankanbieters auseinandersetzen, der das Umbenennen von Tabellen nicht unterstützt. Also musste ich eine Tabelle manuell duplizieren.
Die Datenbank meiner SaaS-Plattform wird auf Planetscale gehostet. Das Unternehmen stellt eine MySQL-kompatible serverlose Datenbank bereit. Dank seiner serverlosen Natur können Sie die Leistungsfähigkeit von horizontalem Sharding, nicht blockierenden Schemaänderungen und vielen weiteren leistungsstarken Datenbankfunktionen nutzen, ohne den Aufwand für deren Implementierung auf sich nehmen zu müssen. Und eine großartige Entwicklererfahrung.
Aus einer anderen Perspektive müssen Sie sich mit einigen Einschränkungen hinsichtlich Schemaänderungen auseinandersetzen. Diese Einschränkungen sind erforderlich, um die Konsistenz in einer Sharding-Umgebung zu gewährleisten.
Sie haben große Fortschritte gemacht, seit ich Kunde wurde (vor fast zwei Jahren), wie zum Beispiel die Unterstützung für Foreign Key-Einschränkungen: https://planetscale.com/docs/concepts/foreign-key-constraints
Inspector ist eine Laravel-Anwendung. Mithilfe der Laravel-Migrationen könnte ich die Umbenennungsfunktion verwenden, um einfach den Namen einer Tabelle zu ändern:
Schema::rename('from', 'to');
Planetscale unterstützt das Umbenennen von Tabellen nicht nativ. Also musste ich einen Workaround finden, um die Aufgabe zu bewältigen.
Um ehrlich zu sein, ist das Umbenennen einer Tabelle ein recht seltener Vorgang. Bei mir lag es an einer Namensüberschneidung zwischen den Entitäten „Projekte“ und „Anwendungen“. Ich musste Projekte -> Anwendungen umbenennen.
Es gibt zwei Möglichkeiten, eine Tabelle in MySQL zu duplizieren.
Sie können nur die Tabellenstruktur (Spalten, Schlüssel, Indizes usw.) ohne Daten duplizieren, indem Sie CREATE TABLE … LIKE:
verwenden.
CREATE TABLE applications LIKE projects;
Das Ergebnis ist die Erstellung der Anwendungstabelle mit genau der gleichen Struktur wie die ursprüngliche Projekttabelle, jedoch OHNE Daten.
Um auch Daten zu importieren, können Sie eine zweite Anweisung als INSERT INTO … SELECT ausführen:
INSERT INTO applications SELECT * FROM projects;
Achten Sie darauf, diese Anweisung auf großen Tabellen auszuführen, da sie viel Zeit und Serverressourcen in Anspruch nehmen kann.
Die zweite Option besteht darin, nur Spaltendefinitionen zu duplizieren und Daten in einer Anweisung zu importieren, indem Sie CREATE TABLE … AS SELECT verwenden:
CREATE TABLE applications AS SELECT * FROM projects;
Die neue Anwendungstabelle erbt nur die grundlegenden Spaltendefinitionen aus der Projekttabelle. Es dupliziert keine Fremdschlüsseleinschränkungen, Indizes und Auto_Inkrement-Definitionen.
Diese Option kann nützlich sein, wenn Sie die Namen von Indizes und Schlüsseln haben, die sich auf den Tabellennamen beziehen. Wenn Sie den Namen der Tabelle ändern, müssen Sie die Namen der Einschränkungen ersetzen. Importieren Sie sie lieber gar nicht erst und machen Sie alles noch einmal.
Datenbanken sind in jeder Phase immer ein heißes Thema für Entwickler. Weitere technische Ressourcen finden Sie im Blog. Hier sind die beliebtesten Artikel zum Thema:
Inspector ist ein Tool zur Codeausführungsüberwachung, das speziell für Softwareentwickler entwickelt wurde. Sie müssen nichts auf Serverebene installieren, installieren Sie einfach das Composer-Paket und schon kann es losgehen.
Im Gegensatz zu anderen komplexen All-in-One-Plattformen ist Inspector supereinfach und PHP-freundlich. Sie können unser Laravel- oder Symfony-Paket ausprobieren.
Wenn Sie auf der Suche nach effektiver Automatisierung, umfassenden Einblicken und der Möglichkeit sind, Warnungen und Benachrichtigungen an Ihre Messaging-Umgebung weiterzuleiten, testen Sie Inspector kostenlos. Registrieren Sie Ihr Konto.
Oder erfahren Sie mehr auf der Website: https://inspector.dev
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3