mysql数据库charset设置_关于java:Liquibase:如何在MySQL数据库表上设置Charset UTF-8?...

我的Liquibase变更集看起来像

我已经使用插件将liquibase与Maven集成在一起

当我运行mvn clean install时,它会创建MySQL表,例如

CREATE TABLE network ( network_id bigint(19) unsigned NOT NULL,

name varchar(300) NOT NULL, active tinyint(1) NOT NULL DEFAULT

'1', created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

created_by varchar(100) DEFAULT NULL, updated_at timestamp NULL

DEFAULT NULL, updated_by varchar(100) DEFAULT NULL, PRIMARY KEY

(network_id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

除了CHARSET=latin1之外,其他所有内容看起来都不错

如何制作CHARSET=UTF-8?

您是否尝试过将其强制替换为所需的值?

您可以在创建表定义之后使用ModifySql元素:

是否可以在启动db迁移过程时在单独的内部编写文件,如果数据库已经部署在其他地方,则会引发错误。

或这个

我对这些更改需要手动添加吗? 我希望liquibase可以将其检测为liquibase:diff的一部分

如果需要按列指定字符集/排序规则(因为您可能希望为列使用不同的字符集),则以下内容对我有用(只需将CHARACTER SET和COLLATE子句附加到column的type attr值):

或者,您可以使用:

您可以省略CHARACTER SET,但不能省略COLLATE。

您使用哪个Liquibase版本进行了测试? 在3.4.1中似乎不起作用

@jso已使用3.5.3版进行了测试。

通过查看文档,Charset取决于数据库,如果是这种情况,从文档可以判断,您可以使用

http://www.liquibase.org/documentation/changes/sql.html

查看MySql文档,您可能只需将以下行插入:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;

当表中有外键时不起作用

通常,字符集的配置是在数据库创建时完成的,您应该像这样在liquibase配置文件中对其进行配置:

url: jdbc:mysql://localhost:3306/yourdatabasename?useUnicode=true&characterEncoding=utf8

有关更多信息,请参见:https://dev.mysql.com/doc/refman/5.0/en/charset-applications.html

或者,如果您已经用其他字符集创建了数据库,则可以尝试将其转换,请参见:

如何将整个MySQL数据库字符集和排序规则转换为UTF-8?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值