mysqldump 備份時的錯誤 1449

今天在一部新安裝的機器上,將復原良好的學籍系統
作備份,卻無法成功備份。
mysqldump -uroot -p --default-character-set=latin1 sfs3 > sfs30324.sql

mysqldump: Got error: 1449: The user specified as a definer ('sfs3man'@'localhost') does not exist when using LOCK TABLES

原來當初還原資料庫時,是用mysqldump 下來的資料倒回去的。

mysqladmin -uroot -p create sfs3;

mysql -uroot -p  sfs3 < sfs3_bak.sql

而在備份檔案 sfs3_bak.sql 內,有下面的資料。

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

有的學籍系統並不是用root去連接,而是設一個sfs3man
我們dump 下來時,它也將這個使用者 sfs3man 記錄了。
而還原到新資料庫時,它也將這個記錄記著。
所以您如果沒有用sfs3man,它就不給您dump 這個資料庫了。
就會產生1449的錯誤。
mysqldump: Got error: 1449

其實這是openid 用的那三個表造成的。
teacher_post_view
teacher_course_view
student_view

方式1:較簡單的方式,
就是再建一個sfs3man 的帳號,就可以正常備份了。

grant all privileges on sfs3.* to 'sfs3man'@'localhost' identified by '該帳號密碼';

方式2:砍掉那三個表再去dump
登入到mysql 指令介面,再下刪掉那三個表的指令

DROP VIEW IF EXISTS sfs3.teacher_post_view;
DROP VIEW IF EXISTS sfs3.teacher_course_view;
DROP VIEW IF EXISTS sfs3.student_view;



標籤: MySQL SFS Ubuntu
評論: 0 | 引用: 0 | 閱讀: 438