您的位置:首页 > 产品设计 > UI/UE

SSH+Easyui应用部署至新浪服务器数据库连接及问题

2015-10-23 11:39 579 查看

一、新建应用,开启SAE Mysql服务

在添加应用之后需开启当前应用的mysql服务,这里开的mysql服务为“共享型”MYIAM数据库,企业版才能开启Inbon型数据库,接下来“操作MYSQL”对数据库初始化

二、数据库数据连接池配置

<bean id="dataSource"  class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl">
<value><![CDATA[jdbc:mysql://w.rdc.sae.sina.com.cn:3307/应用名称?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true]]></value>
</property>
<property name="user"               value="Access Key" />
<property name="password"           value="Secret Key" />
<property name="maxPoolSize"        value="12" />
<property name="minPoolSize"        value="0" />
<property name="maxStatements"      value="100" />
<property name="initialPoolSize"    value="3" />
<property name="maxIdleTime"        value="10"/>
<property name="idleConnectionTestPeriod"   value="10" />
<property name="testConnectionOnCheckin"    value="true" />
<property name="testConnectionOnCheckout"   value="false" />
<property name="preferredTestQuery"         value="SELECT 1 FROM DUAL" />
</bean>


应用名称为当前应用名称即建应用时的名称;

Access Key:键值

Secret Key:密码

这两个值在创建应用时新浪云计算自动生成,在总览页面可以看到。

Hibernate配置文件:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>

<session-factory>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQL5InnoDBDialect
</property>

<mapping resource="x/x/x/User.hbm.xml" />
<mapping resource="x/x/x/Syslog.hbm.xml" />

</session-factory>

</hibernate-configuration>


三、将代码打包成.war文件上传至服务器

新建一个代码版本,将打包生成的.war文件上传至新浪服务器

遇到的问题:

将代码上传至服务器之后,user数据表能正常访问,但syslog表始终访问失败,但在本地是能够正常运行。查看JVM日志报以下错误信息:

- [22/Oct/2015:17:03:49 +0800] JAVA_Error: CREATE command denied to user 'yy52l1njm1'@'10.67.15.82' for table 'syslog' yq34.javaruntime 

- [22/Oct/2015:17:37:57 +0800] JAVA_Error: Unsuccessful: create table weather.syslog (id integer not null auto_increment, log varchar(255), msg varchar(255), status varchar(255) comment '日志状态 成功 错误', createdate datetime not null, primary key (id)) yq33.javaruntime 

创建表和查询时出错,就是syslog数据不能访问,user表可以。问题找了好久发现,在syslog的hibernate映射文件中多了一个catelog字段:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="x.x.x.model.Syslog" table="syslog" catalog="weather">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native"></generator>
</id>
<property name="log" type="java.lang.String">
<column name="log" />
</property>
<property name="msg" type="java.lang.String">
<column name="msg" />
</property>
<property name="status" type="java.lang.String">
<column name="status">
</column>
</property>
<property name="createdate" type="java.sql.Timestamp">
<column name="createdate" length="0" not-null="true" />
</property>
</class>
</hibernate-mapping>
该文件使用myeclipse逆向生成,catalog是由一个数据库实例的元数据组成的,包括基本表,同义词,索引,用户等等,简单的说就是数据库名称。问题就出在这里,在本地的数据库为wather,而由于代码上传至了新浪的云服务器,而这里的数据库名称为app_weather,所以会出现以上错误。将catalog删除或将值改为服务器上数据库的名称,问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sae ssh