2 Stimmen

MySQL - Ansichten Alternative

Ich habe eine Anwendung bei der Arbeit mit MySQL 5 entwickelt, die Views verwendet, um auf die wichtigsten Datensätze zuzugreifen. Es stellt sich heraus, dass unser Produktivserver MySQL 4 verwendet, das keine Views enthält.

Hat jemand einen schnellen und einfachen Weg, damit umzugehen, ohne meinen gesamten Code neu schreiben zu müssen?

3voto

Bill Karwin Punkte 493880

Dies unterstreicht sicherlich die Bedeutung der Verwendung derselben Technologie in Ihren Entwicklungs- und Produktionsumgebungen!

Workarounds mit Triggern oder gespeicherten Prozeduren funktionieren nicht, da diese auch in MySQL 4.x nicht unterstützt werden.

Ihre Optionen zu diesem Zeitpunkt:

  • Umschreiben des Anwendungscode, um Daten in denormalisierten Tabellen zu duplizieren, die Ihren Ansichten entsprechen.

  • Upgrade Ihrer Produktionsdatenbank auf MySQL 5.0. Wenn es sich um einen Hosting-Anbieter handelt, wenden Sie sich an diesen Anbieter und fragen Sie, ob er eine Option für MySQL 5.0 hat. Andernfalls müssen Sie zu einem Anbieter wechseln, der dies tut.

Ich empfehle den letzten Weg, das wird weit weniger Arbeit sein als Code zu schreiben, um doppelte Daten zu verwalten.

Beachten Sie, dass MySQL 4.1 vor über vier Jahren als Produktionssoftware veröffentlicht wurde. Der aktive Support für diese Version endete 2006. Der erweiterte Support für MySQL 4.1 endet am 2009-12-31. Siehe http://www.mysql.com/about/legal/lifecycle/

2voto

derobert Punkte 47691

Der schnellste und sehr einfache Weg, der mir einfällt, besteht darin, DBI zu unterklassifizieren und das SQL dort neu zu schreiben. Natürlich hängt es davon ab, wofür Sie Ansichten verwenden und ob Sie MySQL 4.0 (hat keine Unterabfragen) oder MySQL 4.1 (hat Unterabfragen) verwenden.

Wenn Sie 4.1 haben, können Sie Folgendes ändern:

CREATE VIEW foo AS
  SELECT a, b, c FROM real_table WHERE fooable = 1;

SELECT * FROM foo;

in

SELECT v1.* FROM (
  SELECT a, b, c FROM real_table WHERE fooable = 1
) v1;

Zumindest funktioniert die letztere Syntax in 5.0.x, ich denke, sie sollte auch in 4.1.x funktionieren.

Wenn Sie 4.0 haben... nun, es wird nicht so einfach sein.

1voto

Chris Kloberdanz Punkte 4356

Autsch. Abgesehen von einem DeLorean und einem Fluxkompensator oder dem Aufrüsten des Servers kenne ich keinen einfachen Weg, um dieses Problem zu umgehen. Es scheint eine Menge Änderungen notwendig zu sein.

0voto

Anne Porosoff Punkte 1911

Leider wahrscheinlich nicht, ohne ein Upgrade auf MySQL 5 durchzuführen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X