1.首先安装TDengine服务端在linux上
TDengine多种安装包的安装和卸载 - TDengine | 涛思数据安装过程直接去官网看,非常详细简单
2.出现的问题 windows连接 invalid app version 版本不对应
版本不对应的问题,需要在linux上安装的版本和windows client版本一致,不然windows无法连接服务端
3.windows client 安装的时候必须要用管理员模式下安装这样 在 c://windows//system32/taos.dll 才会有这个文件,而且安装好了taos程序会在 c://TDengine下
如果 c://windows//system32/taos.dll 没有这个文件,可将c://TDengine下conf的taos.dll复制到 c://windows//system32/下
以下是官方原话
java.lang.UnsatisfiedLinkError: no taos in java.library.path
原因:程序没有找到依赖的本地函数库 taos。
解决方法:windows 下可以将 C:\TDengine\driver\taos.dll 拷贝到 C:\Windows\System32\ 目录下,linux 下将建立如下软链 ln -s /usr/local/taos/driver/libtaos.so.x.x.x.x /usr/lib/libtaos.so 即可。
java.lang.UnsatisfiedLinkError: taos.dll Can't load AMD 64 bit on a IA 32-bit platform
原因:目前 TDengine 只支持 64 位 JDK。
解决方法:重新安装 64 位 JDK。
这个里面是函数,是连接linux服务器上的taos服务的关键 ,如果没有那个文件会报错无法连接!!!!
4.linux上安装好了taos进行测试 默认端口6030 而且还需要配置一个域名!!!!
5.windows的host上配置一个 ip 域名 是连接linux上的taos用到的,如果没有配置是连接不上的!!!切记很重要
6.数据源用了druid阿里的,做了ValidationQuery 伪表dual校验 但是目前好像TDengine不支持这个,会提示报错 dual table not exit
7.传时间类型到数据库切记用时间戳传,如果直接传Date时间不准确,传时间的毫秒数
搭建好后下载GUI界面可视化
下载地址
GitHub - skye0207/TDengineGUI: A simple TDengine DeskTop Manager
TDengineGUI: TDengineGUI是一个基于electron构建的,针对时序数据库TDengine的图形化管理工具。具有跨平台、易于使用、版本适应性强等特点。
可以通过“新建连接”按钮,添加新的服务器进行管理。需要提供数据库服务器的ip地址、restful服务的端口号(默认为6041)注意这里不是6030端口了,用的是restful端口6041、连接服务器的用户名和密码(默认为root:taosdata)
注意数据保存在
保留配置文件
/etc/taos/taos.cfg
数据库文件
/var/lib/taos
日志文件
/var/log/taos
配置文件目录:/etc/taos/taos.cfg, 软链接到/usr/local/taos/cfg/taos.cfg;
数据库目录:/var/lib/taos, 软链接到/usr/local/taos/data;
日志目录:/var/log/taos, 软链接到/usr/local/taos/log;
github上有一个taos数据库常见问题的汇总
Issues · taosdata/TDengine · GitHub
如果报错
在druid的配置文件properties里
去掉wall防火墙 ,去掉wall
最后附上整合的demo
配置数据源
taos:
datasource:
##不用restful则用这个driver类: com.taosdata.jdbc.TSDBDriver
##用restful风格则用:com.taosdata.jdbc.rs.RestfulDriver类
driver-class-name: com.taosdata.jdbc.TSDBDriver
##用restful的话则用jdbc:TAOS-RS,6041端口默认是reftful
url: jdbc:TAOS://xxx.xxx.x.xx:6030/db?timezone=Asia/Beijing&charset=UTF-8
username: root
password: taosdata
pom
com.taosdata.jdbc
taos-jdbcdriver
2.0.24
数据源配置
@Configuration
@MapperScan(basePackages = TaosDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "taosSqlSessionFactory")
public class TaosDataSourceConfig {
static final String PACKAGE = "com.xxxx";
private static final String TYPE_ALIASES_PACKAGE = "com.xxxx";
private static final String MAPPER_LOCATIONS = "classpath:mapper/*.xml";
@Value("${taos.datasource.url}")
private String dbUrl;
@Value("${taos.datasource.username}")
private String username;
@Value("${taos.datasource.password}")
private String password;
@Value("${taos.datasource.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.druid.initial-size}")
private int initialSize;
@Value("${spring.datasource.druid.min-idle}")
private int minIdle;
@Value("${spring.datasource.druid.max-active}")
private int maxActive;
@Value("${spring.datasource.druid.max-wait}")
private int maxWait;
@Value("${spring.datasource.druid.time-between-eviction-runs-millis}")
private int timeBetweenEvictionRunsMillis;
@Value("${spring.datasource.druid.min-evictable-idle-time-millis}")
private int minEvictableIdleTimeMillis;
@Value("${spring.datasource.druid.validation-query}")
private String validationQuery;
@Value("${spring.datasource.druid.test-while-idle}")
private boolean testWhileIdle;
@Value("${spring.datasource.druid.test-on-borrow}")
private boolean testOnBorrow;
@Value("${spring.datasource.druid.test-on-return}")
private boolean testOnReturn;
@Value("${spring.datasource.druid.pool-prepared-statements}")
private boolean poolPreparedStatements;
@Value("${spring.datasource.druid.max-pool-prepared-statement-per-connection-size}")
private int maxPoolPreparedStatementPerConnectionSize;
@Value("${spring.datasource.druid.filters}")
private String filters;
@Bean(name = "taosDataSource")
@ConfigurationProperties(prefix = "taos.datasource")
public DataSource taosDataSource() {
DruidDataSource datasource = new DruidDataSource();
datasource.setName("taosDataSource");
datasource.setUrl(this.dbUrl);
datasource.setUsername(username);
datasource.setPassword(password);
datasource.setDriverClassName(driverClassName);
// configuration
datasource.setInitialSize(initialSize);
datasource.setMinIdle(minIdle);
datasource.setMaxActive(maxActive);
datasource.setMaxWait(maxWait);
datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
//不用伪表dual校验登录信息,貌似TDengine不支持
// datasource.setValidationQuery(validationQuery);
datasource.setTestWhileIdle(testWhileIdle);
datasource.setTestOnBorrow(testOnBorrow);
datasource.setTestOnReturn(testOnReturn);
datasource.setPoolPreparedStatements(poolPreparedStatements);
datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
List filterList = new ArrayList<>();
filterList.add(wallFilter());
datasource.setProxyFilters(filterList);
try {
datasource.setFilters(filters);
} catch (SQLException e) {
}
return datasource;
}
@Bean
public WallFilter wallFilter() {
WallFilter wallFilter = new WallFilter();
wallFilter.setConfig(wallConfig());
return wallFilter;
}
@Bean
public WallConfig wallConfig() {
WallConfig config = new WallConfig();
//允许一次执行多条语句
config.setMultiStatementAllow(true);
//允许非基本语句的其他语句
config.setNoneBaseStatementAllow(true);
return config;
}
@Bean(name = "taosTransactionManager")
public DataSourceTransactionManager taosTransactionManager() {
return new DataSourceTransactionManager(taosDataSource());
}
@Bean(name = "taosJdbcTemplate")
public JdbcTemplate taosJdbcTemplate() {
return new JdbcTemplate(taosDataSource());
}
@Bean(name = "taosSqlSessionFactory")
public SqlSessionFactory taosSqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(taosDataSource());
//解决jar包找不到mapperTYPE_ALIASES_PACKAGE问题
sessionFactory.setVfs(SpringBootVFS.class);
sessionFactory.setTypeAliasesPackage(TYPE_ALIASES_PACKAGE);
sessionFactory.setMapperLocations(new
PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATIONS));
return sessionFactory.getObject();
}
}
最后一个test类测试
@Resource(name = "taosJdbcTemplate")
private JdbcTemplate jdbcTemplate;
@Test
public void testToas() throws Exception {
int num = jdbcTemplate.update(
"insert into tb(temperature, ts, humidity) VALUES(?,?,?)",
"35",new Date().getTime(), "123000123"
);