首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MS SQL到MySQL字符集的Java切换

从MS SQL到MySQL字符集的Java切换
EN

Stack Overflow用户
提问于 2010-02-18 18:15:35
回答 1查看 576关注 0票数 1

我正在开发一个用Java连接到数据库的应用程序。客户有SQL Server,只要我们不想在开发期间购买许可证,我就在微软上试用了SQLExpress版本。遗憾的是,SQL Server Express不允许网络访问,因此我们无法在同一数据库上通过网络工作,因此必须在每个开发人员客户端上安装SQL Server Express服务器。

今天早上,我决定在开发过程中切换到MySQL。我用UTF8字符集创建了一个MySQL数据库,并将数据导出到CSV文件中,我还将其转换为UTF8并导入它们。

我使用JDBC驱动程序与Java连接,现在在执行过程中出现了奇怪的行为。结果与连接到SQL Server的客户端完全不同。我自己编写了SQL到Java的粘合代码,没有使用Hibernate或JPA这样的框架。

我猜这个问题与字符编码有关。源代码文件是用CP1252编码的,因为我刚刚开始在Windows上的Eclipse中进行开发,并且信任默认设置。我查询数据库,获取一个ResultSet对象,然后使用ResultSet提供的getter方法读出数据。在数据获取过程中,我不会进行任何字符转换。

现在的问题是,我得到的不是神秘的、编码得不好的输出,而是NullPointerExceptions和奇怪的数据处理。例如:我已经编写了一个方法来比较Job (一个表示Job的对象,该对象具有名称、id、货物和所有这些内容)。运行时的结果会有所不同。有些作业在SQL Server上是相等的,有些作业在MySQL上是相等的,但SQL Server结果是正确的。

我刚刚查看了数据库属性,看到SQL Server的字符编码是ISO-Latin 1。

谢谢你的帮助和科隆的问候,马可

EN

回答 1

Stack Overflow用户

发布于 2010-02-18 18:32:01

我对mySQL知之甚少,但如果mySQL数据是latin1编码的,那么在mySQL端将其导入UTF8数据库肯定会失败,并导致数据损坏。

我会先试着修复数据。您是否可以在不转换转储文件和mySQL中的latin1数据库的情况下重试该过程?

另外,在mySQL和MS SQL之间的数据类型中似乎有:

在规划时要小心:您希望按容量匹配数据类型,而不一定是按名称。例如: MySQL VARCHAR最多可容纳255个字符,而SQL Server VARCHAR最多可容纳4000个字符。在这种情况下,您需要使用MySQL TEXT列类型,而不是VARCHAR.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2287765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档