2011-11-16 31 views
21

Tôi đang sử dụng mã nguồn mở CMS pimcore (http://www.pimcore.org), chạy trên một chương trình phụ trợ MySQL.Cách sửa một khung nhìn SQL bị hỏng

Nó sử dụng các khung nhìn khá phức tạp để biểu diễn các đối tượng và một trong số chúng đã bị hỏng ở một số giai đoạn khi một cột trong bảng khác đang được tham chiếu bởi chế độ xem được đổi tên. Bất cứ khi nào tôi cố gắng để tương tác với các bảng thông qua lệnh SQL tôi nhận được lỗi:

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

Tôi muốn chỉ cần cập nhật chế độ xem để tham khảo các cột đổi tên, nhưng tôi cần phải biết cấu trúc hiện tại của quan điểm trước khi tôi bắt đầu poking xung quanh - làm thế nào chính xác để tôi lấy cấu trúc của xem khi nó bị hỏng? Tôi đã thử

SHOW CREATE VIEW object_6 

nhưng tôi nhận được lỗi tương tự.

Cảm ơn sự giúp đỡ của bạn trước!

Trả lời

23

MySQL:

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

tham khảo: The INFORMATION_SCHEMA VIEWS Table

SQL Server:

USE databasename 
GO 

EXEC sp_helptext viewName 

hoặc cũng là một truy vấn như thế này:

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

nơi bạn có thể thêm một WHERE để chỉ lấy một cái nhìn

+0

Cảm ơn Davide - Tôi nghĩ rằng sp_helptext chỉ là MSSQL, tôi cần MySQL. –

+1

Giải pháp thứ hai hoạt động tốt mặc dù, cảm ơn rất nhiều. –

5

Đơn giản chỉ cần xóa vùng đang xem với "thả xem object_6", sau đó đi vào pimcore backend và lưu các lớp một lần nữa. Chế độ xem sau đó được tự động tái tạo.

+0

không có âm thanh như ý tưởng hay, việc xóa sẽ xóa tất cả tham chiếu đến câu lệnh SQL, cái mà bạn cần để sắp xếp lại chế độ xem sau khi thay đổi tên cột trong (các) bảng được tham chiếu. –

Các vấn đề liên quan