An open-source big data platform designed and optimized for the Internet of Things (IoT).

Build Status Build status Coverage Status CII Best Practices tdengine

TDengine

English | 简体中文 We are hiring, check here

What is TDengine?

TDengine is an open-sourced big data platform under GNU AGPL v3.0, designed and optimized for the Internet of Things (IoT), Connected Cars, Industrial IoT, and IT Infrastructure and Application Monitoring. Besides the 10x faster time-series database, it provides caching, stream computing, message queuing and other functionalities to reduce the complexity and cost of development and operation.

  • 10x Faster on Insert/Query Speeds: Through the innovative design on storage, on a single-core machine, over 20K requests can be processed, millions of data points can be ingested, and over 10 million data points can be retrieved in a second. It is 10 times faster than other databases.

  • 1/5 Hardware/Cloud Service Costs: Compared with typical big data solutions, less than 1/5 of computing resources are required. Via column-based storage and tuned compression algorithms for different data types, less than 1/10 of storage space is needed.

  • Full Stack for Time-Series Data: By integrating a database with message queuing, caching, and stream computing features together, it is no longer necessary to integrate Kafka/Redis/HBase/Spark or other software. It makes the system architecture much simpler and more robust.

  • Powerful Data Analysis: Whether it is 10 years or one minute ago, data can be queried just by specifying the time range. Data can be aggregated over time, multiple time streams or both. Ad Hoc queries or analyses can be executed via TDengine shell, Python, R or Matlab.

  • Seamless Integration with Other Tools: Telegraf, Grafana, Matlab, R, and other tools can be integrated with TDengine without a line of code. MQTT, OPC, Hadoop, Spark, and many others will be integrated soon.

  • Zero Management, No Learning Curve: It takes only seconds to download, install, and run it successfully; there are no other dependencies. Automatic partitioning on tables or DBs. Standard SQL is used, with C/C++, Python, JDBC, Go and RESTful connectors.

Documentation

For user manual, system design and architecture, engineering blogs, refer to TDengine Documentation(中文版请点击这里) for details. The documentation from our website can also be downloaded locally from documentation/tdenginedocs-en or documentation/tdenginedocs-cn.

Building

At the moment, TDengine only supports building and running on Linux systems. You can choose to install from packages or from the source code. This quick guide is for installation from the source only.

To build TDengine, use CMake 3.0.2 or higher versions in the project directory.

Install build dependencies

Ubuntu 16.04 and above & Debian:

sudo apt-get install -y gcc cmake build-essential git

Ubuntu 14.04:

sudo apt-get install -y gcc cmake3 build-essential git binutils-2.26
export PATH=/usr/lib/binutils-2.26/bin:$PATH

To compile and package the JDBC driver source code, you should have a Java jdk-8 or higher and Apache Maven 2.7 or higher installed. To install openjdk-8:

sudo apt-get install -y openjdk-8-jdk

To install Apache Maven:

sudo apt-get install -y  maven

Install build dependencies for taos-tools

We provide a few useful tools such as taosBenchmark (was named taosdemo) and taosdump. They were part of TDengine. From TDengine 2.4.0.0, taosBenchmark and taosdump were not released together with TDengine. By default, TDengine compiling does not include taos-tools. You can use 'cmake .. -DBUILD_TOOLS=true' to make them be compiled with TDengine.

To build the taos-tools on Ubuntu/Debian, the following packages need to be installed.

sudo apt install libjansson-dev libsnappy-dev liblzma-dev libz-dev pkg-config

CentOS 7:

sudo yum install epel-release
sudo yum update
sudo yum install -y gcc gcc-c++ make cmake3 git
sudo ln -sf /usr/bin/cmake3 /usr/bin/cmake

To install openjdk-8:

sudo yum install -y java-1.8.0-openjdk

To install Apache Maven:

sudo yum install -y maven

CentOS 8 & Fedora:

sudo dnf install -y gcc gcc-c++ make cmake epel-release git

To install openjdk-8:

sudo dnf install -y java-1.8.0-openjdk

To install Apache Maven:

sudo dnf install -y maven

Install build dependencies for taos-tools

To build the taos-tools on CentOS, the following packages need to be installed.

sudo yum install zlib-devel xz-devel snappy-devel jansson-devel pkgconfig libatomic

Note: Since snappy lacks pkg-config support (refer to link), it lead a cmake prompt libsnappy not found. But snappy will works well.

Setup golang environment

TDengine includes few components developed by Go language. Please refer to golang.org official documentation for golang environment setup.

Please use version 1.14+. For the user in China, we recommend using a proxy to accelerate package downloading.

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

Get the source codes

First of all, you may clone the source codes from github:

git clone https://github.com/taosdata/TDengine.git
cd TDengine

The connectors for go & grafana and some tools have been moved to separated repositories, so you should run this command in the TDengine directory to install them:

git submodule update --init --recursive

You can modify the file ~/.gitconfig to use ssh protocol instead of https for better download speed. You need to upload ssh public key to GitHub first. Please refer to GitHub official documentation for detail.

[url "[email protected]:"]
    insteadOf = https://github.com/

Build TDengine

On Linux platform

mkdir debug && cd debug
cmake .. && cmake --build .

Note TDengine 2.3.x.0 and later use a component named 'taosAdapter' to play http daemon role by default instead of the http daemon embedded in the early version of TDengine. The taosAdapter is programmed by go language. If you pull TDengine source code to the latest from an existing codebase, please execute 'git submodule update --init --recursive' to pull taosAdapter source code. Please install go language version 1.14 or above for compiling taosAdapter. If you meet difficulties regarding 'go mod', especially you are from China, you can use a proxy to solve the problem.

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

The embedded http daemon still be built from TDengine source code by default. Or you can use the following command to choose to build taosAdapter.

cmake .. -DBUILD_HTTP=false

You can use Jemalloc as memory allocator instead of glibc:

apt install autoconf
cmake .. -DJEMALLOC_ENABLED=true

TDengine build script can detect the host machine's architecture on X86-64, X86, arm64, arm32 and mips64 platform. You can also specify CPUTYPE option like aarch64 or aarch32 too if the detection result is not correct:

aarch64:

cmake .. -DCPUTYPE=aarch64 && cmake --build .

aarch32:

cmake .. -DCPUTYPE=aarch32 && cmake --build .

mips64:

cmake .. -DCPUTYPE=mips64 && cmake --build .

On Windows platform

If you use the Visual Studio 2013, please open a command window by executing "cmd.exe". Please specify "amd64" for 64 bits Windows or specify "x86" is for 32 bits Windows when you execute vcvarsall.bat.

cmake .. -G "NMake Makefiles" nmake">
mkdir debug && cd debug
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" < amd64 | x86 >
cmake .. -G "NMake Makefiles"
nmake

If you use the Visual Studio 2019 or 2017:

please open a command window by executing "cmd.exe". Please specify "x64" for 64 bits Windows or specify "x86" is for 32 bits Windows when you execute vcvarsall.bat.

cmake .. -G "NMake Makefiles" nmake">
mkdir debug && cd debug
"c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" < x64 | x86 >
cmake .. -G "NMake Makefiles"
nmake

Or, you can simply open a command window by clicking Windows Start -> "Visual Studio < 2019 | 2017 >" folder -> "x64 Native Tools Command Prompt for VS < 2019 | 2017 >" or "x86 Native Tools Command Prompt for VS < 2019 | 2017 >" depends what architecture your Windows is, then execute commands as follows:

mkdir debug && cd debug
cmake .. -G "NMake Makefiles"
nmake

On Mac OS X platform

Please install XCode command line tools and cmake. Verified with XCode 11.4+ on Catalina and Big Sur.

mkdir debug && cd debug
cmake .. && cmake --build .

Installing

After building successfully, TDengine can be installed by: (On Windows platform, the following command should be nmake install)

sudo make install

Users can find more information about directories installed on the system in the directory and files section. Since version 2.0, installing from source code will also configure service management for TDengine. Users can also choose to install from packages for it.

To start the service after installation, in a terminal, use:

sudo systemctl start taosd

Then users can use the TDengine shell to connect the TDengine server. In a terminal, use:

taos

If TDengine shell connects the server successfully, welcome messages and version info are printed. Otherwise, an error message is shown.

Install TDengine by apt-get

If you use Debian or Ubuntu system, you can use 'apt-get' command to intall TDengine from official repository. Please use following commands to setup:

wget -qO - http://repos.taosdata.com/tdengine.key | sudo apt-key add -
echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-stable stable main" | sudo tee /etc/apt/sources.list.d/tdengine-stable.list
[Optional] echo "deb [arch=amd64] http://repos.taosdata.com/tdengine-beta beta main" | sudo tee /etc/apt/sources.list.d/tdengine-beta.list
sudo apt-get update
apt-cache policy tdengine
sudo apt-get install tdengine

Quick Run

If you don't want to run TDengine as a service, you can run it in current shell. For example, to quickly start a TDengine server after building, run the command below in terminal: (We take Linux as an example, command on Windows will be taosd.exe)

./build/bin/taosd -c test/cfg

In another terminal, use the TDengine shell to connect the server:

./build/bin/taos -c test/cfg

option "-c test/cfg" specifies the system configuration file directory.

Try TDengine

It is easy to run SQL commands from TDengine shell which is the same as other SQL databases.

create database db;
use db;
create table t (ts timestamp, a int);
insert into t values ('2019-07-15 00:00:00', 1);
insert into t values ('2019-07-15 01:00:00', 2);
select * from t;
drop database db;

Developing with TDengine

Official Connectors

TDengine provides abundant developing tools for users to develop on TDengine. Follow the links below to find your desired connectors and relevant documentation.

Third Party Connectors

The TDengine community has also kindly built some of their own connectors! Follow the links below to find the source code for them.

How to run the test cases and how to add a new test case?

TDengine's test framework and all test cases are fully open source. Please refer to this document for how to run test and develop new test case.

TDengine Roadmap

  • Support event-driven stream computing
  • Support user defined functions
  • Support MQTT connection
  • Support OPC connection
  • Support Hadoop, Spark connections
  • Support Tableau and other BI tools

Contribute to TDengine

Please follow the contribution guidelines to contribute to the project.

Join TDengine WeChat Group

Add WeChat “tdengine” to join the group,you can communicate with other users.

User List

If you are using TDengine and feel it helps or you'd like to do some contributions, please add your company to user list and let us know your needs.

Comments
  • DB error: Unable to establish connection, when windows client(v2.0.5.1) connect to server

    DB error: Unable to establish connection, when windows client(v2.0.5.1) connect to server

    General Questions

    基础环境

    服务端: 使用docker的TDEngine2.0.5.1镜像部署;运行在rancher2.1.13平台,目前6030-6041的UDP端口已开,其中6030/6035/6040是txp端口; 客户端: Linux:配置了hostname与hosts后,使用2.0.5.1的客户端,可以正常访问; Windows:配置了hosts后,使用2.0.5.1客户端,切换数据库与数据库操作异常,显示DB error: Unable to establish connection。

    服务端运行结果

    服务端运行sql

    客户端运行结果

    客户端运行sql

    客户端日志

    taoslog.0.txt

  • 利用jdbc demo创建表结构失败

    利用jdbc demo创建表结构失败

    Successfully executed: create table if not exists t48998 using mt tags(48998) Successfully executed: create table if not exists t48999 using mt tags(48999) java.sql.SQLException: TDengine Error: more dnodes are needed at com.taosdata.jdbc.TSDBJNIConnector.executeQuery(TSDBJNIConnector.java:130) at com.taosdata.jdbc.TSDBStatement.executeUpdate(TSDBStatement.java:69) at TSDBSyncSample.doCreateDbAndTable(TSDBSyncSample.java:117) at TSDBSyncSample.main(TSDBSyncSample.java:50) Failed to execute SQL: create table if not exists t49000 using mt tags(49000)

  • TDengine ERROR (8000000b): Unable to establish connection

    TDengine ERROR (8000000b): Unable to establish connection

    Bug Description 直接运行demo里面的mybatisplus-demo,TemperatureMapperTest.testSelectList,报错,建表语句正常执行,但是插入数据报错

    To Reproduce Steps to reproduce the behavior: 直接运行demo

    Expected Behavior 希望可以解决这个问题

    Screenshots

    2021-07-21 18:00:48.116 DEBUG 16276 --- [           main] c.t.e.m.m.T.dropSuperTable               : ==>  Preparing: drop table if exists temperature 
    2021-07-21 18:00:48.130 DEBUG 16276 --- [           main] c.t.e.m.m.T.dropSuperTable               : ==> Parameters: 
    2021-07-21 18:00:48.139 DEBUG 16276 --- [           main] c.t.e.m.m.T.dropSuperTable               : <==    Updates: 0
    2021-07-21 18:00:48.140 DEBUG 16276 --- [           main] c.t.e.m.m.T.createSuperTable             : ==>  Preparing: CREATE TABLE if not exists temperature(ts timestamp, temperature float) tags(location nchar(64), tbIndex int) 
    2021-07-21 18:00:48.141 DEBUG 16276 --- [           main] c.t.e.m.m.T.createSuperTable             : ==> Parameters: 
    2021-07-21 18:00:48.161 DEBUG 16276 --- [           main] c.t.e.m.m.T.createSuperTable             : <==    Updates: 0
    2021-07-21 18:00:48.163 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==>  Preparing: create table ? using temperature tags( ?, ?) 
    2021-07-21 18:00:48.164 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==> Parameters: t0(String), 杭州(String), 0(Integer)
    2021-07-21 18:00:48.226 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : <==    Updates: 0
    2021-07-21 18:00:48.227 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==>  Preparing: create table ? using temperature tags( ?, ?) 
    2021-07-21 18:00:48.228 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==> Parameters: t1(String), 深圳(String), 1(Integer)
    2021-07-21 18:00:48.242 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : <==    Updates: 0
    2021-07-21 18:00:48.243 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==>  Preparing: create table ? using temperature tags( ?, ?) 
    2021-07-21 18:00:48.243 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==> Parameters: t2(String), 上海(String), 2(Integer)
    2021-07-21 18:00:48.265 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : <==    Updates: 0
    2021-07-21 18:00:48.266 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==>  Preparing: create table ? using temperature tags( ?, ?) 
    2021-07-21 18:00:48.266 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==> Parameters: t3(String), 上海(String), 3(Integer)
    2021-07-21 18:00:48.286 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : <==    Updates: 0
    2021-07-21 18:00:48.287 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==>  Preparing: create table ? using temperature tags( ?, ?) 
    2021-07-21 18:00:48.287 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==> Parameters: t4(String), 深圳(String), 4(Integer)
    2021-07-21 18:00:48.301 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : <==    Updates: 0
    2021-07-21 18:00:48.302 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==>  Preparing: create table ? using temperature tags( ?, ?) 
    2021-07-21 18:00:48.302 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==> Parameters: t5(String), 北京(String), 5(Integer)
    2021-07-21 18:00:48.323 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : <==    Updates: 0
    2021-07-21 18:00:48.324 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==>  Preparing: create table ? using temperature tags( ?, ?) 
    2021-07-21 18:00:48.324 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==> Parameters: t6(String), 杭州(String), 6(Integer)
    2021-07-21 18:00:48.339 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : <==    Updates: 0
    2021-07-21 18:00:48.340 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==>  Preparing: create table ? using temperature tags( ?, ?) 
    2021-07-21 18:00:48.341 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==> Parameters: t7(String), 深圳(String), 7(Integer)
    2021-07-21 18:00:48.360 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : <==    Updates: 0
    2021-07-21 18:00:48.361 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==>  Preparing: create table ? using temperature tags( ?, ?) 
    2021-07-21 18:00:48.361 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==> Parameters: t8(String), 深圳(String), 8(Integer)
    2021-07-21 18:00:48.375 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : <==    Updates: 0
    2021-07-21 18:00:48.376 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==>  Preparing: create table ? using temperature tags( ?, ?) 
    2021-07-21 18:00:48.376 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : ==> Parameters: t9(String), 北京(String), 9(Integer)
    2021-07-21 18:00:48.403 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.createTable  : <==    Updates: 0
    2021-07-21 18:00:48.423 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.insertOne    : ==>  Preparing: insert into t0(ts, temperature) values(?, ?) 
    2021-07-21 18:00:48.423 DEBUG 16276 --- [           main] c.t.e.m.m.TemperatureMapper.insertOne    : ==> Parameters: 2020-11-11 00:00:00.0(Timestamp), 3.1568499(Float)
    2021-07-21 18:00:57.045 DEBUG 16276 --- [           main] c.t.e.m.m.T.dropSuperTable               : ==>  Preparing: drop table if exists temperature 
    2021-07-21 18:00:57.045 DEBUG 16276 --- [           main] c.t.e.m.m.T.dropSuperTable               : ==> Parameters: 
    2021-07-21 18:00:57.071 DEBUG 16276 --- [           main] c.t.e.m.m.T.dropSuperTable               : <==    Updates: 0
    
    org.apache.ibatis.exceptions.PersistenceException: 
    ### Error updating database.  Cause: java.sql.SQLException: TDengine ERROR (8000000b): Unable to establish connection
    ### The error may exist in com/taosdata/example/mybatisplusdemo/mapper/TemperatureMapper.java (best guess)
    ### The error may involve com.taosdata.example.mybatisplusdemo.mapper.TemperatureMapper.insertOne-Inline
    ### The error occurred while setting parameters
    ### SQL: insert into t0(ts, temperature) values(?, ?)
    ### Cause: java.sql.SQLException: TDengine ERROR (8000000b): Unable to establish connection
    
    	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	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)
    	at com.sun.proxy.$Proxy63.insert(Unknown Source)
    	at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:278)
    	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:58)
    	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:62)
    	at com.sun.proxy.$Proxy78.insertOne(Unknown Source)
    	at com.taosdata.example.mybatisplusdemo.mapper.TemperatureMapperTest.before(TemperatureMapperTest.java:49)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
    	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
    	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
    	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
    	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
    	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
    	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221)
    	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
    Caused by: java.sql.SQLException: TDengine ERROR (8000000b): Unable to establish connection
    	at com.taosdata.jdbc.TSDBError.createSQLException(TSDBError.java:73)
    	at com.taosdata.jdbc.TSDBJNIConnector.executeQuery(TSDBJNIConnector.java:123)
    	at com.taosdata.jdbc.TSDBStatement.execute(TSDBStatement.java:85)
    	at com.taosdata.jdbc.TSDBPreparedStatement.execute(TSDBPreparedStatement.java:266)
    	at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
    	at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)
    	at com.sun.proxy.$Proxy89.execute(Unknown Source)
    	at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:47)
    	at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63)
    	at com.sun.proxy.$Proxy88.update(Unknown Source)
    	at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.doUpdate(MybatisSimpleExecutor.java:54)
    	at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
    	at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)
    	... 41 more
    

    Environment (please complete the following information):

    • OS: 服务端 ubuntu 20.02
    • Memory, CPU, current Disk Space 1CPU,4G
    • TDengine Version 服务端版本:2.1.3.2 taos-jdbcdriver版本:2.0.32
  • IDEA connect to TDengine failed

    IDEA connect to TDengine failed

    数据库出不来还报错 image image image 错误信息: java.sql.SQLException: ERROR (2315): unknown taos type in tdengine at com.taosdata.jdbc.TSDBError.createSQLException(TSDBError.java:70) at com.taosdata.jdbc.TSDBError.createSQLException(TSDBError.java:57) at com.taosdata.jdbc.TSDBConstants.taosType2JdbcType(TSDBConstants.java:128) at com.taosdata.jdbc.TSDBResultSetMetaData.getColumnType(TSDBResultSetMetaData.java:154) in RemoteResultSetMetaDataImpl.getFixedColumnType(RemoteResultSetMetaDataImpl.java:105)

  • Taosdemo.go reported

    Taosdemo.go reported "Unable to establish connection"

    装机环境: TDEngine server: ubuntu TDEngine client: win10

    运行Taosdemo.go时,能成功创建数据库和表, 但执行插入数据时,报错“Unable to establish connection”。日志已附上。 taoslog.zip

    从log中可以看到,在执行sql insert command的时候,是向“user-OptiPlex-3020:6030”发送消息 (这是不对的,我并没有配置这个FQDN, 这应该是导致这个问题的原因),而执行drop/create db操作时,是向“tdengine:6030”发送消息 (tdengine是我配置的FQDN)。 image

    FQDN已配置

  • python package install was failed

    python package install was failed

    I found two error when i was installed connector of python.

    Error 1:

    • The error show installation path pip install src/connector/python/python3/ with documentation from link https://www.taosdata.com/en/documentation/connector/#Python-Connector .
    • But the actually path is pip install src/connector/python/windows/python3/ from github project. image

    Error 2:

    • The installation with python was failedwhen i use pip install that shows successfully installed.
    • But i use the command import taos, it shows error below.

    image

  • v2.0.3,DB error: Unable to resolve FQDN when client connect to server in docker.

    v2.0.3,DB error: Unable to resolve FQDN when client connect to server in docker.

    使用win10安装2.0.3 cli,centos7安装2.0.3版 docker image, docker run -d --name taos2.0 -v /home/docker/taos2.0:/var/lib/taos -p 6030-6042:6030-6042 -p 6030-6042:6030-6042/udp tdengine/tdengine

    win10 cmd执行: taos -h centos7的ip show users
    提示无法解析fqdn image

    确认防火墙已关闭。

                new log file                      
    

    ================================================== 09/08 10:59:09.811000 0x00005098 UTL localEp is: DESKTOP-1VKVP30:6030 09/08 10:59:09.811000 0x00005098 UTL timezone not configured, use default 09/08 10:59:09.869000 0x00005098 UTL locale not configured, set to default:Chinese_China.936 09/08 10:59:09.869000 0x00005098 UTL charset not configured, set to default:cp936 09/08 10:59:09.869000 0x00005098 UTL taos config & system info: 09/08 10:59:09.869000 0x00005098 UTL ================================== 09/08 10:59:09.869000 0x00005098 UTL firstEp: DESKTOP-xxx:6030 09/08 10:59:09.869000 0x00005098 UTL secondEp: DESKTOP-xxx:6030 09/08 10:59:09.869000 0x00005098 UTL fqdn: DESKTOP-xxx 09/08 10:59:09.869000 0x00005098 UTL serverPort: 6030 09/08 10:59:09.869000 0x00005098 UTL configDir: C:/TDengine/cfg 09/08 10:59:09.869000 0x00005098 UTL logDir: C:/TDengine/log 09/08 10:59:09.869000 0x00005098 UTL scriptDir: C:/TDengine/script 09/08 10:59:09.869000 0x00005098 UTL arbitrator:
    09/08 10:59:09.869000 0x00005098 UTL numOfThreadsPerCore: 1.000000 09/08 10:59:09.869000 0x00005098 UTL rpcTimer: 1000(ms) 09/08 10:59:09.869000 0x00005098 UTL rpcMaxTime: 600(s) 09/08 10:59:09.869000 0x00005098 UTL shellActivityTimer: 3(s) 09/08 10:59:09.869000 0x00005098 UTL tableMetaKeepTimer: 7200(s) 09/08 10:59:09.869000 0x00005098 UTL compressMsgSize: -1 09/08 10:59:09.869000 0x00005098 UTL maxSQLLength: 65480(byte) 09/08 10:59:09.869000 0x00005098 UTL maxNumOfOrderedRes: 100000 09/08 10:59:09.869000 0x00005098 UTL timezone: not configured 09/08 10:59:09.869000 0x00005098 UTL locale: Chinese_China.936 09/08 10:59:09.869000 0x00005098 UTL charset: cp936 09/08 10:59:09.869000 0x00005098 UTL numOfLogLines: 10000000 09/08 10:59:09.869000 0x00005098 UTL asyncLog: 1 09/08 10:59:09.869000 0x00005098 UTL debugFlag: 0 09/08 10:59:09.869000 0x00005098 UTL rpcDebugFlag: 131 09/08 10:59:09.869000 0x00005098 UTL tmrDebugFlag: 131 09/08 10:59:09.869000 0x00005098 UTL cDebugFlag: 131 09/08 10:59:09.869000 0x00005098 UTL jniDebugFlag: 131 09/08 10:59:09.869000 0x00005098 UTL odbcDebugFlag: 131 09/08 10:59:09.869000 0x00005098 UTL uDebugFlag: 131 09/08 10:59:09.869000 0x00005098 UTL qDebugFlag: 131 09/08 10:59:09.869000 0x00005098 UTL tsdbDebugFlag: 131 09/08 10:59:09.869000 0x00005098 UTL gitinfo: community 09/08 10:59:09.869000 0x00005098 UTL gitinfoOfInternal: internal 09/08 10:59:09.869000 0x00005098 UTL buildinfo: Built at 2020-09-05 22:14:00 09/08 10:59:09.869000 0x00005098 UTL version: 2.0.3.0 09/08 10:59:09.869000 0x00005098 UTL maxBinaryDisplayWidth: 30 09/08 10:59:13.640000 0x00003d48 UTL ERROR failed get the ip address, fqdn:06cbe93d9a0a, code:11001, reason:不知道这样的主机。 09/08 10:59:13.640000 0x00003d48 RPC ERROR TSC, failed to resolve FQDN:06cbe93d9a0a 09/08 10:59:13.640000 0x00003d48 RPC ERROR TSC 000001E6CEC18E20, failed to set up connection(Unable to resolve FQDN) 09/08 10:59:13.740000 0x000023d8 TSC ERROR 000001E6CEC1E300 add into queued async res, code:Syntax errr in SQL 09/08 10:59:17.400000 0x00003d48 UTL ERROR failed get the ip address, fqdn:06cbe93d9a0a, code:11001, reason:不知道这样的主机。 09/08 10:59:17.400000 0x00003d48 RPC ERROR TSC, failed to resolve FQDN:06cbe93d9a0a 09/08 10:59:17.400000 0x00003d48 RPC ERROR TSC 000001E6CEC18E20, failed to set up connection(Unable to resolve FQDN)

  • Unable to establish connection by Windows Client to Linux Server

    Unable to establish connection by Windows Client to Linux Server

    linux和windows都是用的最新版本2.0.2.1版本,Java客户使用的jar包版本2.0.4. 发布到linux服务器是没有问题的,但是在windows本地运行就是出现错误:TDengine Error: Unable to establish connection。

    客户端本地日志: 客户端日志.txt

    服务端日志: 服务端日志.txt

  • jdbcTemplate+Hikari+taos-jdbcdriver2.0.7  DESCRIBE meters  java.sql.SQLException: this operation is NOT supported currently!

    jdbcTemplate+Hikari+taos-jdbcdriver2.0.7 DESCRIBE meters java.sql.SQLException: this operation is NOT supported currently!

    Bug Description 使用jdbcTemplate执行sql “DESCRIBE meters”,报错 this operation is NOT supported currently!

    Environment

    • jdbcTemplate+Hikari+taos-jdbcdriver2.0.7
    • TDengine Version [2.0.7]

    异常堆栈 Caused by: org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL [DESCRIBE meters]; SQL state [null]; error code [0]; this operation is NOT supported currently!; nested exception is java.sql.SQLException: this operation is NOT supported currently! at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1443) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:388) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:452) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:462) at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:490) at org.jetlinks.community.standalone.JetLinksApplication.lambda$run$0(JetLinksApplication.java:63) at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:786) ... 5 common frames omitted Caused by: java.sql.SQLException: this operation is NOT supported currently! at com.taosdata.jdbc.TSDBStatement.getWarnings(TSDBStatement.java:137) at com.zaxxer.hikari.pool.HikariProxyStatement.getWarnings(HikariProxyStatement.java) at org.springframework.jdbc.core.JdbcTemplate.handleWarnings(JdbcTemplate.java:1408) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:377) ... 10 common frames omitted

  • V2.0.4.0 , client driver exception:tscUtil.c:427: tscFreeSqlObj: Assertion `ref >= 0' failed.

    V2.0.4.0 , client driver exception:tscUtil.c:427: tscFreeSqlObj: Assertion `ref >= 0' failed.

    使用C#调研客户端驱动,秒级写入数据,运行一会儿后就报错,导致程序崩溃。 win10内异常如下: image

    Centos7中报错如下: image

    程序执行的插入语句类似这种: insert into th_ys_dd_scyx_func_cs using taghistory tags ('ys.dd.scyx_func-cs') values ('2020-09-30 14:51:20','0.25829825',1,'0.40759492') th_ys_dd_scyx_tag using taghistory tags ('ys.dd.scyx_tag') values ('2020-09-30 14:51:20','0.25829825',1,'0.40759492') th_ys_dd_scyx_var using taghistory tags ('ys.dd.scyx_var') values ('2020-09-30 14:51:20','0.411905',1,'0.40789968') th_ys_dd_scyx_func_s using taghistory tags ('ys.dd.scyx_func-s') values ('2020-09-30 14:51:20','25.829824',1,'40.75949')

    超级表定义如下: create table if not exists TagHistory (time timestamp, Value binary(20), Qualitie TINYINT, PreValue binary(20)) tags (Tagid nchar(100))

  • TDengine Error: more dnodes are needed

    TDengine Error: more dnodes are needed

    create到第49000个表的时候报错 TDengine Error: more dnodes are needed

    空间充足

    另一个问题我也看了, 我vim /etc/taos/taos.cfg 看了有什么配置可以改的 改了长得像的 maxTables ,没有用 请问 该改什么配置? 只能加核吗 我们大概需要二百个表(二百万个设备)

  • 每次编译都会出现这个错误

    每次编译都会出现这个错误

    操作顺序如下: 1,git clone 最新版本的代码 2. mkdir debug 3. cd debug
    4. cmake ..

    出现如下错误: [ 82%] Performing update step for 'taosadapter' fatal: ambiguous argument 'a2e9920': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git [...] -- [...]' 来自 https://github.com/taosdata/taosadapter 5662a6d..a2e9920 3.0 -> origin/3.0

    • [新分支] fix/sunpeng/TD-21185-taosadapter-vgid-conn-put -> origin/fix/sunpeng/TD-21185-taosadapter-vgid-conn-put 之前的 HEAD 位置是 5662a6d... Merge pull request #127 from taosdata/fix/TS-2282/3.0 HEAD 目前位于 a2e9920... fix: fix table vgid conn pool (#128)
PGSpider: High-Performance SQL Cluster Engine for distributed big data.

PGSpider: High-Performance SQL Cluster Engine for distributed big data.

Sep 8, 2022
TimescaleDB is an open-source database designed to make SQL scalable for time-series data.

An open-source time-series SQL database optimized for fast ingest and complex queries. Packaged as a PostgreSQL extension.

Jan 2, 2023
The database built for IoT streaming data storage and real-time stream processing.
The database built for IoT streaming data storage and real-time stream processing.

The database built for IoT streaming data storage and real-time stream processing.

Dec 26, 2022
SpDB is a data integration tool designed to organize scientific data from different sources under the same namespace according to a global schema and to provide access to them in a unified form (views)

SpDB is a data integration tool designed to organize scientific data from different sources under the same namespace according to a global schema and to provide access to them in a unified form (views). Its main purpose is to provide a unified data access interface for complex scientific computations in order to enable the interaction and integration between different programs and databases.

Jun 22, 2022
MySQL Server, the world's most popular open source database, and MySQL Cluster, a real-time, open source transactional database.

Copyright (c) 2000, 2021, Oracle and/or its affiliates. This is a release of MySQL, an SQL database server. License information can be found in the

Dec 26, 2022
BerylDB is a data structure data manager that can be used to store data as key-value entries.
BerylDB is a data structure data manager that can be used to store data as key-value entries.

BerylDB is a data structure data manager that can be used to store data as key-value entries. The server allows channel subscription and is optimized to be used as a cache repository. Supported structures include lists, sets, and keys.

Dec 16, 2022
Kreon is a key-value store library optimized for flash-based storage
Kreon is a key-value store library optimized for flash-based storage

Kreon is a key-value store library optimized for flash-based storage, where CPU overhead and I/O amplification are more significant bottlenecks compared to I/O randomness.

Jul 14, 2022
Trilogy is a client library for MySQL-compatible database servers, designed for performance, flexibility, and ease of embedding.

Trilogy is a client library for MySQL-compatible database servers, designed for performance, flexibility, and ease of embedding.

Dec 31, 2022
Nebula Graph is a distributed, fast open-source graph database featuring horizontal scalability and high availability
Nebula Graph is a distributed, fast open-source graph database featuring horizontal scalability and high availability

Nebula Graph is an open-source graph database capable of hosting super large scale graphs with dozens of billions of vertices (nodes) and trillions of edges, with milliseconds of latency.

Dec 24, 2022
DB Browser for SQLite (DB4S) is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.
DB Browser for SQLite (DB4S) is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.

DB Browser for SQLite What it is DB Browser for SQLite (DB4S) is a high quality, visual, open source tool to create, design, and edit database files c

Jan 2, 2023
PolarDB for PostgreSQL (PolarDB for short) is an open source database system based on PostgreSQL.
PolarDB for PostgreSQL (PolarDB for short) is an open source database system based on PostgreSQL.

PolarDB for PostgreSQL (PolarDB for short) is an open source database system based on PostgreSQL. It extends PostgreSQL to become a share-nothing distributed database, which supports global data consistency and ACID across database nodes, distributed SQL processing, and data redundancy and high availability through Paxos based replication. PolarDB is designed to add values and new features to PostgreSQL in dimensions of high performance, scalability, high availability, and elasticity. At the same time, PolarDB remains SQL compatibility to single-node PostgreSQL with best effort.

Dec 31, 2022
FoundationDB - the open source, distributed, transactional key-value store
FoundationDB - the open source, distributed, transactional key-value store

FoundationDB is a distributed database designed to handle large volumes of structured data across clusters of commodity servers. It organizes data as

Dec 31, 2022
The open-source database for the realtime web.
The open-source database for the realtime web.

RethinkDB What is RethinkDB? Open-source database for building realtime web applications NoSQL database that stores schemaless JSON documents Distribu

Jan 9, 2023
Open Source Oracle Compatible PostgreSQL.

IvorySQL is advanced, fully featured, open source Oracle compatible PostgreSQL with a firm commitment to always remain 100% compatible and a Drop-in r

Dec 28, 2022
Serverless SQLite database read from and write to Object Storage Service, run on FaaS platform.

serverless-sqlite Serverless SQLite database read from and write to Object Storage Service, run on FaaS platform. NOTES: This repository is still in t

May 12, 2022
Velox is a new C++ vectorized database acceleration library aimed to optimizing query engines and data processing systems.
Velox is a new C++ vectorized database acceleration library aimed to optimizing query engines and data processing systems.

Velox is a C++ database acceleration library which provides reusable, extensible, and high-performance data processing components

Jan 8, 2023
C++11 Lightweight Redis client: async, thread-safe, no dependency, pipelining, multi-platform
C++11 Lightweight Redis client: async, thread-safe, no dependency, pipelining, multi-platform

C++11 Lightweight Redis client: async, thread-safe, no dependency, pipelining, multi-platform

Jan 8, 2023
cpp_redis is a C++11 Asynchronous Multi-Platform Lightweight Redis Client
cpp_redis is a C++11 Asynchronous Multi-Platform Lightweight Redis Client

C++11 Lightweight Redis client: async, thread-safe, no dependency, pipelining, multi-platform

Jan 3, 2023
Open Opening Book Standard (OOBS)

Open Opening Book Standard (OOBS) Brief of main ideas/techniques Use SQL/SQLite as the backbone/framework for storing data and querying information Al

Jun 15, 2022