一起去看海

2011/07/23

mysqldump: Got error: 1449

Filed under: 经验分享 — Tags: , — admin @ 17:03

今天安装了个测试环境,将数据库的数据导了过来,再导出的时候提示错误。

#mysqldump -uroot -p testdb > test.sql

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

xxx用户是在正式环境建立的用户,但是我是整个数据库备份的,用户和权限应该也会导入才对。查看user表也确实存在此用户。从网上看的资料解决备份是给这个用户增加权限。登入Mysql

mysql> grant all privileges on testdb.* to xxx@’xxxxxx’ identified by ‘123456′;

再次导出,成功。

但是将导出的文件导入一个新的数据库,再导出的话还是会出现这个问题,总不能每次都要建立这个个没有用的用户吧。

最后的解决办法是编辑导出的备份文件,将xxx@xxxxxx都改成root@localhost,重新导入就没问题。

2010/05/20

java备份mysql数据库

Filed under: Java笔记 — Tags: — admin @ 13:16

java备份mysql数据库的备忘。开始找了个非常长的程序,通过读取控制台执行备份命令后的输出再保存为文件,显得十分麻烦。想到命令行里有重定向符号,可以将输出直接保存为文件,修改后程序就十分短了。

执行的时候mysql的bin目录一定要在path里面。早上在添加了环境变量之后没有重启Eclipse,程序一直没跑过。

[java]package com.ooobj.db;

public class DBBackup {

public void backup() {
try {
String mysql = "mysqldump -uroot -padmin dianiks > D:/temp/dianiks.sql";
java.lang.Runtime.getRuntime().exec("cmd /c " + mysql);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void load() {

try {
String mysql = "mysqladmin -uroot -padmin create dianiks";
java.lang.Runtime.getRuntime().exec("cmd /c " + mysql);
String path = "mysql -uroot -padmin dianiks < D:/temp/dianiks.sql";
java.lang.Runtime.getRuntime().exec("cmd /c " + path);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}

public static void main(String[] args) {
DBBackup db = new DBBackup();
db.backup();
db.load();
}

}[/java]

Powered by WordPress