Closed zergduan closed 2 months ago
@zergduan 非常感谢。 这个确实是个bug,app_client_value_minute_stats 是一张废弃的表,但代码中某些地方(如发送应用日报)仍会访问该表,不会获取到数据。缺失这个表,不会对其他业务逻辑产生影响。
cachecloud 2.0版本之后应该都会有这个问题,将在下一版本进行修复。
目前建议在数据库中,增加该表,建表语句如下:
DROP TABLE IF EXISTS app_client_value_minute_stats
;
CREATE TABLE app_client_value_minute_stats
(
app_id
bigint(20) NOT NULL COMMENT '应用id',
collect_time
bigint(20) NOT NULL COMMENT '统计时间:格式yyyyMMddHHmm00',
update_time
datetime NOT NULL COMMENT '创建时间',
command
varchar(20) NOT NULL COMMENT '命令',
distribute_type
tinyint(4) NOT NULL COMMENT '值分布类型',
count
int(11) NOT NULL COMMENT '调用次数',
PRIMARY KEY (app_id
,collect_time
,command
,distribute_type
),
KEY idx_collect_time
(collect_time
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='客户端每分钟值分布上报数据统计';
多谢您的解答
Cachecloud 3.2 运行7天后开始报错app_client_value_minute_stats表不存在,但是源码中给出的初始化SQL中并没有这张表的创建语句,这是bug么?
2024-05-17 10:00:00.075 ERROR 5726 --- [zThreadPool-123] c.s.c.s.app.impl.AppDailyDataCenterImpl :
Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'cachecloud.app_client_value_minute_stats' doesn't exist
The error may exist in class path resource [mapper/AppClientValueStatDao.xml]
The error may involve defaultParameterMap
The error occurred while setting parameters
SQL: select distribute_type, sum(count) as count from app_client_value_minute_stats where app_id=? and collect_time between ? and ? group by distribute_type order by distribute_type
Cause: java.sql.SQLSyntaxErrorException: Table 'cachecloud.app_client_value_minute_stats' doesn't exist
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table 'cachecloud.app_client_value_minute_stats' doesn't exist
org.springframework.jdbc.BadSqlGrammarException:
Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'cachecloud.app_client_value_minute_stats' doesn't exist
The error may exist in class path resource [mapper/AppClientValueStatDao.xml]
The error may involve defaultParameterMap
The error occurred while setting parameters
SQL: select distribute_type, sum(count) as count from app_client_value_minute_stats where app_id=? and collect_time between ? and ? group by distribute_type order by distribute_type
Cause: java.sql.SQLSyntaxErrorException: Table 'cachecloud.app_client_value_minute_stats' doesn't exist
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table 'cachecloud.app_client_value_minute_stats' doesn't exist at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:235) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446) at com.sun.proxy.$Proxy82.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230) at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) at com.sun.proxy.$Proxy139.getAppValueDistriList(Unknown Source) at com.sohu.cache.stats.app.impl.AppDailyDataCenterImpl.getAppClientValueSizeDistributeCountMap(AppDailyDataCenterImpl.java:209) at com.sohu.cache.stats.app.impl.AppDailyDataCenterImpl.generateAppDaily(AppDailyDataCenterImpl.java:165) at com.sohu.cache.stats.app.impl.AppDailyDataCenterImpl.sendAppDailyEmail(AppDailyDataCenterImpl.java:88) at com.sohu.cache.stats.app.impl.AppDailyDataCenterImpl.sendAppDailyEmail(AppDailyDataCenterImpl.java:74) at com.sohu.cache.schedule.jobs.AppDailyJob.action(AppDailyJob.java:35) at com.sohu.cache.schedule.jobs.CacheBaseJob.execute(CacheBaseJob.java:33) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) Caused by: java.sql.SQLSyntaxErrorException: Table 'cachecloud.app_client_value_minute_stats' doesn't exist at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916) at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:354) at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44) at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java) at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:63) at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) at sun.reflect.GeneratedMethodAccessor243.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433) ... 16 common frames omitted