TDengine是Github上目前比较火的开源大数据平台。官网上的介绍:TDengine是涛思数据推出的一款开源的专为物联网、车联网、工业互联网、IT运维等设计和优化的大数据平台。除核心的快10倍以上的时序数据库功能外,还提供缓存、数据订阅、流式计算等功能,最大程度减少研发和运维的复杂度。听着很是有诱惑力,所以就想装下试试它。没想到一试就入了一堆坑。
第一步安装
官网上明确说明TDengine目前只支持在Linux系统上安装和运行(Ubuntu和Centos),于是在虚拟机上安装了Ubuntu16.04。然后在官网上下载对应Ubuntu版本的安装包TDengine DEB package(下载链接)。将下载下来的tdengine-1.6.1.6.deb放在了新建目录taov下,然后键入命令安装:
sudo dpkg -i tdengine-1.6.1.6.deb

(注:由于写博客之前已经安装了,所以再次安装的时候会先卸载以前的再安装。安装成功后会显示成功安装)
然后启动TDengine的进程服务(systemctl 命令需要 root 权限):
systemctl start taosd
这就安装完成,在linux命令终端输入taos就进入,如图所示:

第二步windows客户端
官网上提供windows的客户端可以连接到linux上的TDengine,客户端文件夹里面也包含taos.dll,taos.h以及java,c,python等语言的Demo。这里下载的客户端版本需要与在Ubuntu上安装的版本一样。下载下来一路next就好,它自动安装在C:\TDengine目录下。在该目录下打开命令窗口,键入taos -h ip地址 即可连上:

第三步配置VS
想跑通它提供的c Demo,所以配置VS,在这里遇到一堆坑。用VS2008创建项目-->win32应用程序,然后选择空项目。创建完成后,分别创建test.cpp,然后将demo里面的代码拷到里面,并加入C:\TDengine\include\taos.h 头文件,然后将代码中的
#include <taos.h> 改为 #include "taos.h"
1.点击运行,会给报第一个错:
![]()
找不到stdint.h头文件,随便在网上找了一个,谁知给报更多的错,都是找不到stdint.h里面引用的文件,后来我发现找的这个属于C99规范引进来的,VS2008对其支持不好。然后又在网上搜 “vs2008 下缺少stdint.h ”,找了好几个试,终于找到一个(下载链接),不再报这个错误。
2.接着点击运行,结果给报一大堆外部符号找不到的错误:

百度了一下都说是缺少相应的lib文件,但TDengine的Windows客户端没提供taos.lib,只有taos.dll。这时候看了下官网说要把taos.dll放到C:\Windows\System32下,打开system32文件一查找已经存在taos.dll,应该是安装客户端的时候自动放进去了,但还是报错。我就尝试写代码动态加载taos.dll,将报错缺少的外部符号引入进来。
(动态加载参考:https://blog.csdn.net/pride_xu/article/details/78858143)

3. 然后运行结果这次直接给我停掉了,很是郁闷。百度了半天也不知道哪的问题。c的不行,我就试起python的Demo,然后我发现,用64位的python就可以跑成功,32位的就不行。恍然大悟,taos.dll应该是64位的,而VS编译的时候默认是32位的,然后配置VS的64位的编译器,充满期待的点击运行,结果又弹出框说无法生成调试信息,黑框一闪而过。这个问题好解决,项目属性--->链接器-->生成调试信息,选择是就好了。点击显示连接成功!

4. 但是TDengine给我报时间戳超出范围,好是郁闷。Demo里面数据库操作的代码都没动,怎么就超出了。发现insert语句中给的时间戳类型不对。将"%ld"变成“%lld”,这样就不会报错了。

至此,在遇到一堆坑,捣鼓折磨了两天后终于跑通了,特此纪念一下。
本文介绍了如何在VS2008上配置和使用TDengine,包括在Ubuntu上安装TDengine,使用Windows客户端连接Linux上的TDengine,以及解决VS2008中遇到的stdint.h缺失、外部符号找不到、编译位数不匹配和时间戳范围错误等问题。

4万+





