扩展SQueryl 对MySql的编码的支持

最近在学习Squeryl,用的是mysql数据库,程序员都是比较懒的,程序能做的,坚决不手工来做。Scheme中有个方法,create用来创建表,通过程序插入数据时发现不能插入中文,肯定是数据库编码的问题。

然后看了下MYSQLAdapter和DataBaseAdapter,发现建表语句是通过writeCreateTable方法来实现的,那么应该可以重写该方法加入指定的编码。

具体实现的代码是

import org.squeryl.{Schema, Table}
import org.squeryl.adapters.MySQLAdapter
import org.squeryl.internals.StatementWriter

class MySqlUtf8Adapter extends MySQLAdapter {
  override def writeCreateTable[T](t: Table[T], sw: StatementWriter, schema: Schema) = {
    super.writeCreateTable(t, sw, schema);
    sw.write(" ENGINE=InnoDB DEFAULT CHARSET=UTF8 ")
  }
}
时间: 2024-11-12 22:20:07

扩展SQueryl 对MySql的编码的支持的相关文章

mysql utf8编码

做微信项目,报错 "Incorrect string value: '\\xF0\\x9F\\x98\\x8B' for column 'nickname' at row 1" 原因是微信昵称中含有表情,表情属于4字节编码,而 mysql utf-8 编码只支持1-3个字节.从MYSQL5.5开始,可支持4个字节UTF编码utf8mb4,utf8mb4兼容utf8,即utf8是utf8mb4的子集.所以之后项目默认应该使用 utf8mb4 子集,不用想那么多. 所以就改表的编码呗,我没

Mysql错误编码和解释表

Mysql错误编码和解释表1.错误消息的组成 一共由三部分组成 mysql数字错误代码,这个数字的mysql的特定值,不可以移植到其它数据库系统. 一个五位长度的sqlstate值,这些值取自ANSI SQL和ODBC,并且更加标准化.并不是所有的MySQL错误号都具有相应的SQLSTATE值.在这些情况下,使用'HY000' (一般错误). 错误的消息描述 2.一些额外的说明 如果需要错误检查,请使用错误代码,而不是错误消息. 如果数据库管理员更改语言设置,则会影响错误消息的语言. 错误代码在

PHP和MYSQL的编码问题

http://blog.csdn.net/martinkro/article/details/5352474 1 MYSQL中的字符集概念  Mysql的字符集里有两个概念,一个是"Character set(字符集)",另一个是"Collations".1.1 Collations  Collations翻成中文是"校验",在网页开发的过程中,这个词汇,只在Mysql里使用,主要作用是指导Mysql对字符的比较,比如, ASCII字符集里,Co

MySQL字符集编码

MySQL字符集编码总结 之前内部博客上凯哥分享了一篇关于mysql字符集的文章,之前我对mysql字符集一块基本没有深究过,看到凯哥文章后有些地方有点疑惑,遂自己去看了mysql的官方文档,并参考了凯哥的文章,总结了这篇博文.本文主要是对mysql常见的字符集问题进行整理,如有错误,请大家指正. 1.MySQL字符集编码简介 谈到字符集,总会跟编码扯上关系,有关字符集和编码的理论知识请参见我之前的文章.MySQL内部是支持多种字符集的,这里就不再严格区分字符集和编码的概念了.同时,MySQL中

修改数据库mysql字符编码为UTF8

Mysql数据库是一个开源的数据库,应用非常广泛.以下是修改mysql数据库的字符编码的操作过程. 步骤1:查看当前的字符编码方法 mysql> show variables like'character%'; +--------------------------+----------------------------+ |Variable_name |Value | +--------------------------+----------------------------+ |cha

ubantu 下 修改mysql 默认编码

启动mysql后,以root登录mysql [email protected]:~# mysql -uroot -proot mysql> show variables like 'character%'; #执行编码显示+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+

mysqli扩展库操作mysql数据库

配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 1 <?php 2 //mysqli扩展库操作mysql数据库,面向对象 3 $mysqli=new MySQLi("localhost","root","root","test"); 4 if($mysqli->connect_

Mysql查看编码方式

查看数据库的字符集 show variables like 'character\_set\_%'; 输出: +--------------------------+--------+ | Variable_name            | Value  | +--------------------------+--------+ | character_set_client     | latin1 | | character_set_connection | latin1 | | cha

Mysql对空间数据库的支持及使用Hibernate Spatial对空间数据的持久化操作

1.空间数据:如果做地图方面的开发,那么对空间数据肯定不会陌生,也就是地图元素即,点,线,图形,它们有x,y坐标的信息 2.MySQL对于空间数据库本身就是支持的,只是支持的不太全面,实际上专业空间数据库非postgis莫属,之所以使用Mysql是因为项目中的数据库已经使用了它,而且对于地图方面的功能并不是很高,所以才有了这样的应该场景:使用MySQL做空间数据库,对于MySQL的空间数据库的操作,参见MySQL使用手册第19章中有详细的说明使用各空间函数的使用sql语句 3.Hibernate