ActiveMQ的一个问题

安装了activemq,然后要配置成数据库持久化的。

参考文档:

http://activemq.apache.org/persistence.html

这是个pdf教程,比较详细:

http://open.iona.com/docs/broker/5.0/persistence/persistence.pdf

启动之后报错:

 

java.io.IOException: Failed to get last broker message id:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'activemq.activemq_acks' doesn't exist

 

 按道理数据表会在启动的时候自动创建。因为journaledJDBC有个属性createTablesOnStartup默认是true。并且查看了一下数据库,有两个表:

 

ACTIVEMQ_LOCK    
 ACTIVEMQ_MSGS
 

 

搜索了一下,在activemq的邮件列表里找到答案:

http://www.mail-archive.com/users@activemq.apache.org/msg03698.html

 

Specified key was too long; max key length is 1000 bytes is the error not
allowing the creation of ACTIVEMQ_ACKS

You are probably using utf8/some other multibyte encoding as the collation
in your database....

Switch it to latin1 or ASCII... The varchar fields that the key is composed
of add up to less than 1000 characters but with a multibyte encoding the key
length is over 1000 bytes.

 

 

我创建activemq数据库的时候用的character-set是utf-8.把character-set改成latin1就好了。

Related Posts
Null Object 模式之我见
终于在网上建了个家
JDK 6 Update 14内置VisualVM 1.1.1
Lucene范围查询(RangeQuery)的几个问题
Spring自动装配(autowire)导致quartz不能运行
四个有害的java习惯


分类 : java