Comment réparer une vue SQL cassée
J'utilise le CMS open source pimcore (http://www.pimcore.org), qui fonctionne sur un backend MySQL.
Il utilise des vues assez compliquées pour représenter des objets et l'une d'entre elles est cassée à un moment donné lorsqu'une colonne d'une autre table référencée par la vue a été renommée. Chaque fois que j'essaie d'interagir avec la table via des commandes SQL, je reçois l'erreur:
Voir ' barriste_website.object_6 ' références table(s) invalide (s) ou la colonne(s) de la ou des fonction(s) ou definer / invoker of view manque de droits d'utilisation les
Je voudrais simplement mettre à jour la vue pour référencer les colonnes renommées, mais j'ai besoin de connaître la structure actuelle de la vue avant de commencer à fouiller - comment récupérer exactement la structure de la vue une fois qu'elle est cassée? J'ai essayé
SHOW CREATE VIEW object_6
Mais je reçois la même erreur.
Merci pour votre aide à l'avance!
2 réponses
MySQL:
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
Référence: la table des vues INFORMATION_SCHEMA
Serveur SQL:
USE databasename
GO
EXEC sp_helptext viewName
Ou aussi une requête comme celle-ci:
SELECT TABLE_NAME as ViewName,
VIEW_DEFINITION as ViewDefinition
FROM INFORMATION_SCHEMA.Views
Où vous pouvez ajouter un WHERE
pour récupérer une seule vue
Supprimez simplement la vue avec "drop view object_6" , puis allez dans le backend pimcore et enregistrez à nouveau la classe. La vue est ensuite régénérée automatiquement.