java - 应用程序在 ubuntu 中表现奇怪,但在 windows 中工作正常

标签 java mysql tomcat ubuntu struts

我有一个简单的基于 Java 的 Web 应用程序(使用 servlet、jsp 和 struts 框架)。该应用程序使用 mysql 作为数据库服务器,使用 tomcat 作为应用服务器。

该应用程序在 Windows 上运行良好,但是当我在 ubuntu 中部署相同的应用程序时,出现以下错误:

### Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dbconnect.ACT_GE_PROPERTY' doesn't exist
The error occurred while setting parameters
SQL: select VALUE_ from ACT_GE_PROPERTY where NAME_ = 'schema.version'
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dbconnect.BDB_PROPERTIES' doesn't exist
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:104)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:95)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:59)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:54)
at org.activiti.engine.impl.db.DbSqlSession.getDbVersion(DbSqlSession.java:741)
at org.activiti.engine.impl.db.DbSqlSession.dbSchemaCheckVersion(DbSqlSession.java:697)

在 mysql 数据库中,在 dbconnect 数据库中创建了两个表,一个是大写名称(即 ACT_GE_PROPERTY),另一个是小写名称(即 act_ge_properties),这些表是由应用程序自动创建的。

当我在 Windows 上运行应用程序时,只创建了一个小写的表作为 act_ge_properties,但在 ubuntu 中创建了两个表,一个大写,一个小写,即 ACT_GE_PROPERTY 和 act_ge_properties。

我不知道是什么问题,谁能帮帮我?

编辑

错误:

04:08:20,856 [main] ERROR org.activiti.engine.impl.interceptor.CommandContext  - Error while closing command context
org.activiti.engine.ActivitiException: no activiti tables in db. set <property name="databaseSchemaUpdate" to value="true" or value="create-drop" (use create-drop for testing only!) in bean processEngineConfiguration in activiti.cfg.xml for automatic schema creation
at   org.activiti.engine.impl.db.DbSqlSession.dbSchemaCheckVersion(DbSqlSession.java:719)
at org.activiti.engine.impl.db.DbSqlSession.performSchemaOperationsProcessEngineBuild(DbSqlSession.java:1111)
at org.activiti.engine.impl.SchemaOperationsProcessEngineBuild.execute(SchemaOperationsProcessEngineBuild.java:25)
at org.activiti.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24)
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:61)
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)
at org.activiti.engine.impl.ProcessEngineImpl.<init>(ProcessEngineImpl.java:76)
at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:372)
at org.activiti.engine.ProcessEngines.buildProcessEngine(ProcessEngines.java:194)
at org.activiti.engine.ProcessEngines.initProcessEnginFromResource(ProcessEngines.java:167)
at org.activiti.engine.ProcessEngines.init(ProcessEngines.java:98)
at org.activiti.engine.ProcessEngines.getProcessEngine(ProcessEngines.java:224)
at org.activiti.engine.ProcessEngines.getDefaultProcessEngine(ProcessEngines.java:217)
at org.activiti.rest.servlet.ActivitiServletContextListener.contextInitialized(ActivitiServletContextListener.java:32)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause:   com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dbconnect.act_ge_property' doesn't exist
### The error may exist in org/activiti/db/mapping/entity/Property.xml
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: select VALUE_ from ACT_GE_PROPERTY where NAME_ = 'schema.version'

最佳答案

在 Windows 上,磁盘上的文件名不区分大小写。但是,在 Linux 上,它们区分大小写。

在您安装的 Windows MySQL 上,当您的表被写入底层磁盘文件时,这种不区分大小写的特性随后会传递给您的数据库应用程序,这意味着表名不区分大小写。

相反,在 Linux 上,表名区分大小写。

MySQL 提供了一个服务器系统变量来始终将表名转换为小写:

http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_lower_case_table_names

关于java - 应用程序在 ubuntu 中表现奇怪,但在 windows 中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19925875/

相关文章:

java - 安卓/Java : Watch for variable change from main class

java - RMI客户端和服务器运行在不同的jre版本中

ruby-on-rails-3 - Rails3 Mysql2::Error: Unknown column - ActiveRecord::StatementInvalid

mysql - MYSQL 中加密数据的数据类型

在 Tomcat 上运行项目时 Spring Filter ClassCastException

tomcat - 静态内容。 tomcat6 和 tomcat7 行为的区别

java - 弹跳球 Java。不明白为什么球不弹跳

mysql - 如何使用显示 'using temporary; using filesort' 的 EXPLAIN 优化 MySQL 查询

tomcat - 为什么在 Tomcat 上以另一个用户身份启动 Jenkins 时所有配置都丢失了?

java - LinkedList 永远不会终止 Java 中的输入