使用flyway进行数据迁移中文乱码

u010257815 2015-04-22 06:14:19
mian程序如下
package foobar;

import org.flywaydb.core.Flyway;

public class App {

private static String url = "jdbc:mysql://localhost:3306/miaomiao";
private static String user = "root";
private static String password = "root";


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Flyway flyway = new Flyway();
flyway.setEncoding("UTF-8"); // 设置sql脚本文件的编码
flyway.setDataSource(url, user, password);

flyway.migrate();
}

}


项目的编码方式为UTF-8
然后我使用的是mysql数据库,版本为5.1.73
数据库的排序规则为utf8_general_ci

下面是sql
CREATE TABLE `hehe` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1
;


INSERT INTO `hehe` (`name`) VALUES ('aa');
INSERT INTO `hehe` (`name`) VALUES ('bb');
INSERT INTO `hehe` (`name`) VALUES ('阿才');
INSERT INTO `hehe` (`name`) VALUES ('大飞');


运行后我看了下数据库


sql语句复制到HeidiSQL运行却没有乱码

求个解决方案,谢谢
...全文
288 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ByeNeverMore 2016-12-23
  • 打赏
  • 举报
回复
想请教一个问题,我最近也在用flyway 每次运行之后,就会把我数据库中原来的数据给覆盖了,比如我导出的是一个数据库的结构放在db/migration下,我在数据库中的一个表里删除了一个字段,再次运行,数据库里面的数据被覆盖了,只有更改后的表结构了,没有数据!请问有没有什么方法可以使他不会覆盖已有的数据?
qq_29039167 2015-12-03
  • 打赏
  • 举报
回复
不知道你解决了没 我前段时间也碰到相同的问题了,后来我弄好了 就算数据是UTF8,可是你在flyway.conf这个配置文件里记得把encoding设置为GBK 我改完以后,所有乱码就解决了,希望可以帮到你。 其实flyway相关的东西国内基本搜不出来,搜出来的都是千篇一律,无非就是官网介绍的很详细怎么怎么 我想说看官网根本屁都整不出来。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧