Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy MySQL może niezawodnie przywracać kopie zapasowe zawierające widoki, czy nie?

To pytanie jest trochę stare, ale właśnie zmarnowałem kilka godzin, próbując rozwiązać dokładnie ten sam problem, więc myślę, że jasne wyjaśnienie może się komuś przydać w przyszłości...

Aby przejść do sedna:Problem tkwi w polu DEFINIER w twoim zrzucie mysql. Wygląda mniej więcej tak:

/*!50013 DEFINER=`some_user`@`localhost` SQL SECURITY DEFINER */

Problem polega na tym, że *[email protected] * zawsze będzie zakodowane na stałe do konta użytkownika, które zostało użyte do utworzenia widoku w oryginalnej bazie danych i NIE użytkownika, którego użyłeś do wyeksportowania lub zaimportowania bazy danych zgodnie z oczekiwaniami (a przynajmniej tak zrobiłem). A później, podczas importu, ten użytkownik zostanie użyty do ponownego utworzenia widoku.

Możesz więc eksportować/importować jako root, ale jeśli oryginalna baza danych działa pod innym użytkownikiem i nie ma uprawnień CREATE VIEW w nowej bazie danych, import się nie powiedzie.

Masz dwa proste rozwiązania:

  1. Wyszukaj i zamień wszystkie odniesienia do some_user @localhost w pliku zrzutu z nowym użytkownikiem (tym, którego używasz do importowania zrzutu, np. example@ sqldat.com )
  2. Lub możesz przyznać *some_user* odpowiednie uprawnienia do nowej bazy danych, aby widoki mogły być tworzone na jego koncie

Każdy sposób rozwiąże problem, ale myślę, że pierwsze podejście jest o wiele lepsze i czystsze, ponieważ nie musisz się martwić o wielu użytkowników w przyszłości.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstawianie wielu wierszy z formularza php do bazy danych

  2. Czy istnieją wady używania ogólnego varchar(255) dla wszystkich pól tekstowych?

  3. znalezienie produktów, które klienci kupili razem

  4. Instrukcja WHERE po UNION w SQL?

  5. MySQL - sortuj ciąg znaków oddzielonych przecinkami w kolumnie