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 Leistung 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 tolle 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 Fremdschlüsseleinschränkungen: https://planetscale.com/docs/concepts/foreign-key-constraints
Inspector ist eine Laravel-Anwendung. Mit den 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 umbenennen -> Anwendungen.
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 mit CREATE TABLE … AS SELECT:
zu importieren
CREATE TABLE applications AS SELECT * FROM projects;
Die neue Anwendungstabelle erbt nur die grundlegenden Spaltendefinitionen von der Projekttabelle. Es werden keine Fremdschlüsseleinschränkungen, Indizes und Auto_Inkrement-Definitionen dupliziert.
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 für Entwickler in jeder Phase immer ein heißes Thema. 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 dasComposer-Paketund 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
Das obige ist der detaillierte Inhalt vonMySQL, wie man eine Tabelle dupliziert – schnelle Tipps. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!