2011-11-16 22 views
21

Estoy usando el código abierto CMS pimcore (http://www.pimcore.org), que se ejecuta en un back-end MySQL.Cómo reparar una vista SQL quebrada

Utiliza vistas bastante complicadas para representar objetos y una de ellas se ha roto en algún momento cuando se cambió el nombre de una columna de otra tabla a la que hace referencia la vista. Siempre que trato de interactuar con la tabla a través de comandos SQL que recibo el error:

View 'barriste_website.object_6' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

me gustaría simplemente actualizar la vista para hacer referencia a las columnas cambiado el nombre, pero necesito saber la estructura actual de la vista antes de que yo Empieza a hurgar: ¿cómo recupero la estructura de la vista una vez que se rompe? He intentado

SHOW CREATE VIEW object_6 

pero recibo el mismo error.

Gracias por su ayuda con anticipación!

Respuesta

23

MySQL:

SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v'; 

referencia: The INFORMATION_SCHEMA VIEWS Table

SQL Server:

USE databasename 
GO 

EXEC sp_helptext viewName 

o también una consulta como esta:

SELECT TABLE_NAME as ViewName, 
VIEW_DEFINITION as ViewDefinition 
FROM INFORMATION_SCHEMA.Views 

donde se puede añadir un WHERE sólo para recuperar un punto de vista

+0

Gracias Davide - Creo que sp_helptext es solo MSSQL, necesito MySQL. –

+1

La segunda solución funciona bien, muchas gracias. –

5

Sólo tiene que eliminar de la vista con "drop vista object_6", y luego entrar en el back-end pimcore y guardar la clase otra vez. La vista se regenera automáticamente.

+0

no suena como una buena idea, al eliminar se eliminará toda referencia a la declaración de SQL, que se necesita para recomponer la vista después de cambiar los nombres de las columnas en la (s) tabla (s) referenciada (s). –