From eea8dc127838053e3cb9d8f02c450ee2759f63b9 Mon Sep 17 00:00:00 2001 From: qianming Date: Thu, 9 Dec 2021 14:20:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/docs/guide/datasource.md | 20 +++++++- doc/docs/guide/question.md | 72 ++++++++++++++++++---------- doc/docs/picture/qusetion/img_4.png | Bin 0 -> 11641 bytes doc/docs/picture/qusetion/img_5.png | Bin 0 -> 21005 bytes 4 files changed, 66 insertions(+), 26 deletions(-) create mode 100644 doc/docs/picture/qusetion/img_4.png create mode 100644 doc/docs/picture/qusetion/img_5.png diff --git a/doc/docs/guide/datasource.md b/doc/docs/guide/datasource.md index 01ee19dd..432ac9b9 100644 --- a/doc/docs/guide/datasource.md +++ b/doc/docs/guide/datasource.md @@ -23,10 +23,26 @@ ## 扩展 -- 以kudu impala 为例,在lib文件夹下加入kudu impala相关的JDBC连接相关的包,如图在数据库中新增数据源类型,参考数据源类型(上方) +### JDBC驱动类数据源添加: -![An image](../picture/datasource/kudu-impala-lib.png) +- 第一种,在report-core/lib目录下添加
+ 按照同样的层级将驱动包放置,使用build.sh脚本进行打包,前端页面选择jdbc数据源,填上对应的驱动类即可使用。
+ **注意:** 此方式添加的jar包只能使用build.sh进行编译后才会生效。
+
+ +- 第二种,在pom.xml中添加
+ 使用build.sh脚本编译或者maven package编译都可以,前端页面选择jdbc数据源,填上对应驱动。
+ +
+ +### 非JDBC类数据源驱动添加: + +例如原生ES、Redis之类。
+ +1、在源码中编写解析代码
+2、使用页面生成数据字典
+3、添加对应驱动包
diff --git a/doc/docs/guide/question.md b/doc/docs/guide/question.md index 17952c46..761ee0f9 100644 --- a/doc/docs/guide/question.md +++ b/doc/docs/guide/question.md @@ -1,53 +1,74 @@ +## 其他 + +- 禁用flyway及切换底层数据库方案
+ [链接](https://my.oschina.net/u/4517014/blog/5269319)
+ +- 数据源数据集用法总结
+ [链接](https://my.oschina.net/u/4517014/blog/5270828)
+ - 使用Maven Install打包时报错
![img.png](../picture/qusetion/img.png)
- 请使用Maven Package进行打包
+ 使用Maven Package进行打包
-### 版本问题:[开发环境参考](https://report.anji-plus.com/report-doc/guide/quicklyDevelop.html) +
+ +## 版本问题:[开发环境参考](https://report.anji-plus.com/report-doc/guide/quicklyDevelop.html) - 底层数据库为Mysql8.0+时,flyway执行SQL报错
- Node.js是V16版本时 npm install失败
- jdk使用1.7或者11及以上时,编译打包不过
- ![img](../picture/qusetion/img_1.png)
+
+ ![img](../picture/qusetion/img_4.png)
+ +
-- MssSqlServer 2014及其上下版本数据源测试不过。以2014版本为例。
- ![img](../picture/qusetion/img_2.png)
- 将1.2.6改成1.2.0
+## 访问相关 -- 浏览器兼容性 当前未对部分浏览器做兼容性适配,推荐使用谷歌浏览器进行访问。
+- 浏览器兼容性
+ 当前未对部分浏览器做兼容性适配,推荐使用谷歌浏览器进行访问。
+ 已知:IE白屏、部分版本的火狐浏览器拖动组件出现跳转新页面及无法返回的情况
+ +
- 部署完进入系统,点击预览大屏,大屏提示:“执行sql失败“
![img](../picture/qusetion/img_3.png)
请先重置mysql数据源,将mysql数据源的账号密码修改为你当前系统的账号密码。
-- flyway执行报错1.0.10sql失败
- 错误提示:Caused by: org.flywaydb.core.api.FlywayException: Validate failed: Detected failed
- migration to version 1.0.10 (create report share)
- 请参考此 [Issue](https://gitee.com/anji-plus/report/issues/I47JNE) 解决此问题
+
-- 禁用flyway及切换底层数据库方案
- [链接](https://my.oschina.net/u/4517014/blog/5269319)
+- 页面提示“404”
+ 1、确保访问地址无误,根据部署方式的不同9095/9528 端口皆可以进入项目,如果一个不行试另一个端口
+ 2、确定前端是否启动
+ 3、确定后端是否启动 br> -- 数据源数据集用法总结
- [链接](https://my.oschina.net/u/4517014/blog/5270828)
+
-### 执行源码编译脚本(build.sh)报错 +## 执行源码编译脚本(build.sh)报错 - 提示:“*** report-ui/dist/* *** No such file or directory”
前端编译失败。
- 99%的原因是Node.js版本过高(高于14),导致前端编译失败,Nodejs在编译执行初始化时会去下载一些依赖,如果依赖下载不来,也会导致失败。
- 剩下极少数情况可能是你编译的linux系统问题。
+ 大部分原因是Node.js版本过高(高于V14),导致前端编译失败。
+ 另一部分是Nodejs在编译执行初始化时会去下载一些依赖,如果依赖下载不下来,也会导致失败。
+ +
- 提示:“report-core/target/aj-report-*.zip *** No such file or directory”
后端编译失败。
- 可能原因有:Mvn版本过低/过高,导致后端编译失败
+ 可能原因有:Maven版本过低/过高,导致后端编译失败
+ +
- 使用eclipse进行源码编译时失败
失败的提示有很多,这里建议换成IDEA
+
+ - 使用IDEA进行源码编译时提示:“*** openjdk-***”
请使用jdk1.8 -### 启动服务报错 +
+ +## 启动服务相关 - 提示“xxx The driver has not received any packets from the server”
连不上mysql。
@@ -55,11 +76,14 @@ 2、mysql版本不兼容,详细看上面关于版本兼容性
3、bootstrap.yml中配置的mysql地址ip不对
+
-- 提示“404”
- 1、确保访问地址无误,根据部署方式的不同9095/9528 端口皆可以进入项目,如果一个不行试另一个端口
- 2、确定前端是否启动
- 3、确定后端是否启动 br> +- flyway执行报错1.0.10sql失败
+ 错误提示:Caused by: org.flywaydb.core.api.FlywayException: Validate failed: Detected failed
+ migration to version 1.0.10 (create report share)
+ 请参考此 [Issue](https://gitee.com/anji-plus/report/issues/I47JNE) 解决此问题
+ +
diff --git a/doc/docs/picture/qusetion/img_4.png b/doc/docs/picture/qusetion/img_4.png new file mode 100644 index 0000000000000000000000000000000000000000..808f4fd09e313f8c31fc4b12df76682a019fe685 GIT binary patch literal 11641 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 literal 0 HcmV?d00001 diff --git a/doc/docs/picture/qusetion/img_5.png b/doc/docs/picture/qusetion/img_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c33db50bf8c0b5d4446bd72be328643e5c872369 GIT binary patch literal 21005 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