解决Ofbiz连接sql server2008R2数据库无法访问店铺应用的问题
来源:互联网 发布:嵌入式网络那些事 编辑:程序博客网 时间:2024/06/09 18:14
问题:
启动ofbiz项目后,访问localhost:8080/ecommerce/control/;
页面显示“A Product Store has not been defined for this ecommerce site. A Product Store can be created using the ofbizsetup wizard.”。
前提条件:
Ofbiz/framework/entity/config/entityengine.xml配置连接sql;
Ofbiz/framework/entity/lib/jdbc下存在sqljdbc4.jar包;
已经生成数据库表;
问题分析:
如果启动项目过程中控制台出现报错情况,则有可能是项目中其它原因导致,可以跳过本文章。本问题只针对启动过程无报错,但却访问不了店铺应用的情况。本情况出现的根本原因是对应的数据表无演示数据,并非系统代码问题。打开数据库执行查询语句:select * from PRODUCT_STORE,仅有一条数据,这与生成的mysql数据库对应的表有5条数据存在差异。说明在生成演示数据过程中出现问题。
解决:(参考http://ofbiz.135035.n4.nabble.com/Known-issues-using-SQL-Server-2012-td4644269.html)
更改以下配置文件:
1、applications/party/entitydef/entitymodel.xml(改unique="false")
<relation type="one" fk-name="COM_EVNT_RESENUM" rel-entity-name="Enumeration"> <key-map field-name="reasonEnumId" rel-field-name="enumId"/> </relation> <index name="COMMEVT_MSG_ID" unique="false"> <index-field name="messageId"/> </index>
<field name="verifyHash" type="value"></field> <field name="expireDate" type="date-time"></field> <prim-key field="emailAddress"/> <index name="EMAIL_VERIFY_HASH" unique="false"> <index-field name="verifyHash"/> </index>
<index name="LAST_NAME_IDX"> <index-field name="lastName"/></index><index name="CARD_ID_IDX" unique="false"> <index-field name="cardId"/></index>
2、applications/product/entitydef/entitymodel.xml(改unique="false")
<relation type="one" fk-name="INV_ITEM_CUOM" title="Currency" rel-entity-name="Uom"> <key-map field-name="currencyUomId" rel-field-name="uomId"/></relation><index name="INVITEM_SOFID" unique="false"> <index-field name="softIdentifier"/></index><index name="INVITEM_ACTNM" unique="false"> <index-field name="activationNumber"/></index><index name="INV_ITEM_SN"> <index-field name="serialNumber"/></index>
3、applications/marketing/entitydef/entitymodel.xml(改unique="false")
<relation type="one" fk-name="CNCT_LST_CST_ST" rel-entity-name="StatusItem"> <key-map field-name="statusId"/></relation><index name="CNTLSTCST_MSG_ID" unique="false"> <index-field name="messageId"/></index>
4、applications/accounting/entitydef/entitymodel.xml(改unique="false")
<relation type="one" fk-name="GLACCT_PAR" title="Parent" rel-entity-name="GlAccount"> <key-map field-name="parentGlAccountId" rel-field-name="glAccountId"/></relation><index name="GLACCT_UNQCD" unique="false"> <index-field name="accountCode"/></index>
更改这些配置文件后再重新生成数据表及数据,问题解决。从参考的文件中提及到采用jtds.jar驱动来替换sqljdbc4.jar驱动,后来通过验证,更改驱动不是必要的步骤,只需要更改以上几个配置文件,即能解决问题。
补充:
如果改用jtds驱动来连接,则需要更改Ofbiz/framework/entity/config/entityengine.xml相应的配置如下。
sqljdbc4.jar连接配置节
<datasource name="localmssql" helper-class="org.ofbiz.entity.datasource.GenericHelperDAO" schema-name="dbo" field-type-name="mssql" check-on-start="true" add-missing-on-start="true" join-style="ansi" alias-view-columns="false" use-fk-initially-deferred="false"> <read-data reader-name="tenant"/> <read-data reader-name="seed"/> <read-data reader-name="seed-initial"/> <read-data reader-name="demo"/> <read-data reader-name="ext"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" jdbc-uri="jdbc:sqlserver://localhost:1433;databaseName=test;SelectMethod=cursor;" jdbc-username="sa" jdbc-password="123456" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="comp/env/jdbc/xa/localmssql" isolation-level="ReadCommitted"/> --> <!-- Orion Style JNDI name --></datasource>
jtds.jar连接配置
<datasource name="localmssql" helper-class="org.ofbiz.entity.datasource.GenericHelperDAO" schema-name="dbo" field-type-name="mssql" check-on-start="true" add-missing-on-start="true" join-style="ansi" alias-view-columns="false" use-fk-initially-deferred="false"> <read-data reader-name="tenant"/> <read-data reader-name="seed"/> <read-data reader-name="seed-initial"/> <read-data reader-name="demo"/> <read-data reader-name="ext"/> <read-data reader-name="ext-test"/> <read-data reader-name="ext-demo"/> <inline-jdbc jdbc-driver="net.sourceforge.jtds.jdbc.Driver" jdbc-uri="jdbc:jtds:sqlserver://localhost:1433;databaseName=ofbiz;SelectMethod=cursor;" jdbc-username="sa" jdbc-password="123456" isolation-level="ReadCommitted" pool-minsize="2" pool-maxsize="250" time-between-eviction-runs-millis="600000"/> <!-- <jndi-jdbc jndi-server-name="default" jndi-name="comp/env/jdbc/xa/localmssql" isolation-level="ReadCommitted"/> --> <!-- Orion Style JNDI name --></datasource>
经验证,两条连接方式都能正常连接。完毕
- 解决Ofbiz连接sql server2008R2数据库无法访问店铺应用的问题
- ofbiz店铺切换问题
- sql server2008R2 连接access
- SQL Server2008R2 用SQLserver身份认证模式连接数据库的方法
- sql server2008R2 备份所有数据库
- sql server2008R2 备份所有数据库
- 解决连接SQL Server 2005数据库的问题
- 解决SQL Server 2005数据库无法连接的问题
- 解决SQL Server管理器无法连接远程数据库的问题
- 解决连接SQL Server 2005数据库的问题
- 解决Win7编译后XP系统无法访问数据库的问题
- 通过ssh 解决本地无法访问内网数据库的问题
- 解决vs2005连接远程SQL数据库问题
- Eclipse中使用JDBC连接Sql Server2008R2
- svn 数据库无法访问的解决
- ofbiz连接mysql数据库的方法二
- 在SQL Server2008R2中附加数据库失败
- 刚登陆SQL Server2008R2数据库就出错
- Xcode插件管理工具Alcatraz
- IOS版添加phonegap--微信授权插件教程
- JAVA解析XML之DOM方式
- CMD 命令大全
- JAVA解析XML之SAX方式
- 解决Ofbiz连接sql server2008R2数据库无法访问店铺应用的问题
- spring mvc 及普元nui前端框架学习笔记
- Android开发之应用与开发环境(一)
- Struts form传值
- Android开发之应用与开发环境(二)
- 对于Android stdio 新建工程出错的经验
- android中activity之间传递数据的3种方式
- SQL 实用语法
- Html学习之html的基本结构