faq-ch.md 8.9 KB
Newer Older
Y
Yiqing Liu 已提交
1
# 常见问题
X
Xiaxin Li 已提交
2

Y
Yiqing Liu 已提交
3
## 1. TDengine2.0之前的版本升级到2.0及以上的版本应该注意什么?☆☆☆
X
Xiaxin Li 已提交
4 5 6 7 8 9 10

2.0版本在之前版本的基础上,进行了完全的重构,配置文件和数据文件是不兼容的。在升级之前务必进行如下操作:

1. 删除配置文件,执行 <code> sudo rm -rf /etc/taos/taos.cfg </code>
2. 删除日志文件,执行 <code> sudo rm -rf /var/log/taos/ </code>
3. 确保数据已经不再需要的前提下,删除数据文件,执行 <code> sudo rm -rf /var/lib/taos/ </code>
4. 安装最新稳定版本的TDengine
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
11
5. 如果数据需要迁移数据或者数据文件损坏,请联系涛思数据官方技术支持团队,进行协助解决
X
Xiaxin Li 已提交
12

Y
Yiqing Liu 已提交
13
## 2. Windows平台下JDBCDriver找不到动态链接库,怎么办?
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
14
请看为此问题撰写的<a href='blog/2019/12/03/jdbcdriver找不到动态链接库/'>技术博客 </a>
X
Xiaxin Li 已提交
15

Y
Yiqing Liu 已提交
16
## 3. 创建数据表时提示more dnodes are needed
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
17
请看为此问题撰写的<a href='blog/2019/12/03/创建数据表时提示more-dnodes-are-needed/'>技术博客</a>
X
Xiaxin Li 已提交
18

Y
Yiqing Liu 已提交
19
## 4. 如何让TDengine crash时生成core文件?
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
20
请看为此问题撰写的<a href='blog/2019/12/06/tdengine-crash时生成core文件的方法/'>技术博客</a>
X
Xiaxin Li 已提交
21

Y
Yiqing Liu 已提交
22
## 5. 遇到错误"Unable to establish connection", 我怎么办?
X
Xiaxin Li 已提交
23 24 25

客户端遇到链接故障,请按照下面的步骤进行检查:

Y
Yiqing Liu 已提交
26
1. 检查网络环境
27
    * 云服务器:检查云服务器的安全组是否打开TCP/UDP 端口6030-6042的访问权限
Y
Yiqing Liu 已提交
28 29
    * 本地虚拟机:检查网络能否ping通,尽量避免使用`localhost` 作为hostname
    * 公司服务器:如果为NAT网络环境,请务必检查服务器能否将消息返回值客户端
30
    
Y
Yiqing Liu 已提交
31
2. 确保客户端与服务端版本号是完全一致的,开源社区版和企业版也不能混用
32

Y
Yiqing Liu 已提交
33
3. 在服务器,执行 `systemctl status taosd` 检查*taosd*运行状态。如果没有运行,启动*taosd*
34

Y
Yiqing Liu 已提交
35
4. 确认客户端连接时指定了正确的服务器FQDN (Fully Qualified Domain Name(可在服务器上执行Linux命令hostname -f获得)
36

Y
Yiqing Liu 已提交
37
5. ping服务器FQDN,如果没有反应,请检查你的网络,DNS设置,或客户端所在计算机的系统hosts文件
38 39 40

6. 检查防火墙设置,确认TCP/UDP 端口6030-6042 是打开的

Y
Yiqing Liu 已提交
41
7. 对于Linux上的JDBC(ODBC, Python, Go等接口类似)连接, 确保*libtaos.so*在目录*/usr/local/lib/taos*里, 并且*/usr/local/lib/taos*在系统库函数搜索路径*LD_LIBRARY_PATH*
42

Y
Yiqing Liu 已提交
43
8. 对于windows上的JDBC, ODBC, Python, Go等连接,确保*driver/c/taos.dll*在你的系统搜索目录里 (建议*taos.dll*放在目录 *C:\Windows\System32*)
44

Y
Yiqing Liu 已提交
45
9. 如果仍不能排除连接故障,请使用命令行工具nc来分别判断指定端口的TCP和UDP连接是否通畅
X
Xiaxin Li 已提交
46 47 48
   检查UDP端口连接是否工作:`nc -vuz {hostIP} {port} `
   检查服务器侧TCP端口连接是否工作:`nc -l {port}`
   检查客户端侧TCP端口链接是否工作:`nc {hostIP} {port}`
49 50 51 52 53 54 55 56 57 58 59 60 61
   
10. 可以使用taos程序内嵌的网络连通检测功能:验证服务器和客户端之间指定的端口连接是否通畅(包括TCP和UDP)。

    taos通过参数 -n 来确定运行服务端功能,还是客户端功能。-n server:表示运行检测服务端功能;-n client:表示运行检测客户端功能。

    1)首先在服务器上停止taosd服务;

    2)在服务器上运行taos内嵌的网络连通检测的服务端功能:taos -n server -P 6030 -e 6042 -l 1000;

    3)在客户端运行taos内嵌的网络连通检测的客户端功能:taos -n client -h host -P 6030 -e 6042 -l 1000;

    -n :指示运行网络连通检测的服务端功能,或客户端功能,缺省值为空,表示不启动网络连通检测;

H
Hui Li 已提交
62
    -h:指示服务端名称,可以是ip地址或fqdn格式。如:192.168.1.160,或 192.168.1.160:6030,或 hostname1,或hostname1:6030。缺省值是127.0.0.1。
63 64 65 66 67

    -P :检测的起始端口号,缺省值是6030;

    -e:检测的结束端口号,必须大于等于起始端口号,缺省值是6042;

H
Hui Li 已提交
68
    -l:指定检测端口连通的报文长度,最大64000字节,缺省值是1000字节,测试时服务端和客户端必须指定相同;
69 70 71

    服务端设置的起始端口和结束端口号,必须包含客户端设置的起始端口和结束端口号;

H
Hui Li 已提交
72
    对于起始端口号有三种设置方式:缺省值、-h指定、-P指定,优先级是:-P指定 > -h指定 > 缺省值。
73 74 75

    客户端运行的输出样例:

H
Hui Li 已提交
76 77 78 79 80
    `sum@sum-virtualBox /home/sum $ taos -n client -h ubuntu-vbox6`

    `host: ubuntu-vbox6	start port: 6030	end port: 6042	packet len: 1000`

    `tcp port:6030 test ok.		udp port:6030 test ok.`
H
Hui Li 已提交
81
    
H
Hui Li 已提交
82
    `tcp port:6031 test ok.		udp port:6031 test ok.`
H
Hui Li 已提交
83
    
H
Hui Li 已提交
84
    `tcp port:6032 test ok.		udp port:6032 test ok.`
H
Hui Li 已提交
85
    
H
Hui Li 已提交
86
    `tcp port:6033 test ok.		udp port:6033 test ok.`
H
Hui Li 已提交
87
    
H
Hui Li 已提交
88
    `tcp port:6034 test ok.		udp port:6034 test ok.`
H
Hui Li 已提交
89
    
H
Hui Li 已提交
90
    `tcp port:6035 test ok.		udp port:6035 test ok.`
H
Hui Li 已提交
91
    
H
Hui Li 已提交
92
    `tcp port:6036 test ok.		udp port:6036 test ok.`
H
Hui Li 已提交
93

H
Hui Li 已提交
94
    `tcp port:6037 test ok.		udp port:6037 test ok.`
H
Hui Li 已提交
95
    
H
Hui Li 已提交
96
    `tcp port:6038 test ok.		udp port:6038 test ok.`
H
Hui Li 已提交
97
    
H
Hui Li 已提交
98
    `tcp port:6039 test ok.		udp port:6039 test ok.`
H
Hui Li 已提交
99
    
H
Hui Li 已提交
100
    `tcp port:6040 test ok.		udp port:6040 test ok.`
H
Hui Li 已提交
101
    
H
Hui Li 已提交
102
    `tcp port:6041 test ok.		udp port:6041 test ok.`
H
Hui Li 已提交
103
    
H
Hui Li 已提交
104
    `tcp port:6042 test ok.		udp port:6042 test ok.`
H
Hui Li 已提交
105
    
H
Hui Li 已提交
106 107
    如果某个端口不通,会输出 `port:xxxx test fail`的信息。

X
Xiaxin Li 已提交
108

陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
109 110 111 112 113 114 115 116 117 118
## 6. 遇到错误“Unexpected generic error in RPC”, 我怎么办?
产生这个错误,是由于客户端或数据节点无法解析FQDN(Fully Qualified Domain Name)导致。对于TAOS Shell或客户端应用,请做如下检查:

1. 请检查连接的服务器的FQDN是否正确
2. 如果网络配置有DNS server, 请检查是否正常工作
3. 如果网络没有配置DNS server, 请检查客户端所在机器的hosts文件,查看该FQDN是否配置,并是否有正确的IP地址。
4. 如果网络配置OK,从客户端所在机器,你需要能Ping该连接的FQDN,否则客户端是无法链接服务器的


## 7. 虽然语法正确,为什么我还是得到 "Invalid SQL" 错误
X
Xiaxin Li 已提交
119 120 121

如果你确认语法正确,2.0之前版本,请检查SQL语句长度是否超过64K。如果超过,也会返回这个错误。

陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
122
## 8. 是否支持validation queries?
X
Xiaxin Li 已提交
123 124 125

TDengine还没有一组专用的validation queries。然而建议你使用系统监测的数据库”log"来做。

陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
126
## 9. 我可以删除或更新一条记录吗?
X
Xiaxin Li 已提交
127 128 129

不能。因为TDengine是为联网设备采集的数据设计的,不容许修改。但TDengine提供数据保留策略,只要数据记录超过保留时长,就会被自动删除。

陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
130
## 10. 我怎么创建超过1024列的表?
X
Xiaxin Li 已提交
131 132 133

使用2.0及其以上版本,默认支持1024列;2.0之前的版本,TDengine最大允许创建250列的表。但是如果确实超过限值,建议按照数据特性,逻辑地将这个宽表分解成几个小表。

Y
Yiqing Liu 已提交
134
## 10. 最有效的写入数据的方法是什么?
X
Xiaxin Li 已提交
135

陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
136
批量插入。每条写入语句可以一张表同时插入多条记录,也可以同时插入多张表的多条记录。
X
Xiaxin Li 已提交
137

Y
Yiqing Liu 已提交
138
## 11. 最有效的写入数据的方法是什么?windows系统下插入的nchar类数据中的汉字被解析成了乱码如何解决?
X
Xiaxin Li 已提交
139 140

windows下插入nchar类的数据中如果有中文,请先确认系统的地区设置成了中国(在Control Panel里可以设置),这时cmd中的`taos`客户端应该已经可以正常工作了;如果是在IDE里开发Java应用,比如Eclipse, Intellij,请确认IDE里的文件编码为GBK(这是Java默认的编码类型),然后在生成Connection时,初始化客户端的配置,具体语句如下:
Y
Yiqing Liu 已提交
141 142 143 144 145 146 147
```JAVA
Class.forName("com.taosdata.jdbc.TSDBDriver");
Properties properties = new Properties();
properties.setProperty(TSDBDriver.LOCALE_KEY, "UTF-8");
Connection = DriverManager.getConnection(url, properties);
```
## 12.TDengine GO windows驱动的如何编译?
X
Xiaowei Su 已提交
148
请看为此问题撰写的<a href='blog/2020/01/06/tdengine-go-windows驱动的编译/'>技术博客 
X
Xiaxin Li 已提交
149

Y
Yiqing Liu 已提交
150 151 152 153 154 155 156 157 158
## 13.JDBC报错: the excuted SQL is not a DML or a DDL?
请更新至最新的JDBC驱动
```JAVA
<dependency>
  <groupId>com.taosdata.jdbc</groupId>
  <artifactId>taos-jdbcdriver</artifactId>
  <version>2.0.4</version>
</dependency>
```
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
159
## 14. 怎么报告问题?
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
160 161 162
如果 FAQ 中的信息不能够帮到您,需要 TDengine 技术团队的技术支持与协助,请将以下两个目录中内容打包:
1. /var/log/taos
2. /etc/taos 
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
163

陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
164
附上必要的问题描述,以及发生该问题的执行操作,出现问题的表征及大概的时间,在<a href='https://github.com/taosdata/TDengine'> GitHub</a>提交Issue。
X
Xiaxin Li 已提交
165

陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
166
为了保证有足够的debug信息,如果问题能够重复,请修改/etc/taos/taos.cfg文件,最后面添加一行“debugFlag 135"(不带引号本身),然后重启taosd, 重复问题,然后再递交。但系统正常运行时,请一定将debugFlag设置为131,否则会产生大量的日志信息,降低系统效率。