3.7.7 常见问题¶
-
如果在较长的建表语句中出现语法错误,可能会出现语法错误提示不全的现象。这里罗列可能的语法错误供手动纠错:
-
语法结构错误。请仔细阅读
HELP CREATE TABLE;
,检查相关语法结构。 -
保留字。当用户自定义名称遇到保留字时,需要用反引号
``
引起来。建议所有自定义名称使用这个符号引起来。 -
中文字符或全角字符。非
utf8
编码的中文字符,或隐藏的全角字符(空格,标点等)会导致语法错误。建议使用带有显示不可见字符的文本编辑器进行检查。
-
-
Failed to create partition [xxx] . Timeout
Doris
建表是按照Partition
粒度依次创建的。当一个Partition
创建失败时,可能会报这个错误。即使不使用Partition
,当建表出现问题时,也会报Failed to create partition
,因为如前文所述,Doris
会为没有指定Partition
的表创建一个不可更改的默认的Partition
。当遇到这个错误是,通常是
BE
在创建数据分片时遇到了问题。可以参照以下步骤排查:-
在
fe.log
中,查找对应时间点的Failed to create partition
日志。在该日志中,会出现一系列类似{10001-10010}
字样的数字对。数字对的第一个数字表示Backend ID
,第二个数字表示Tablet ID
。如上这个数字对,表示ID
为10001
的Backend
上,创建ID
为10010
的Tablet
失败了。 -
前往对应
Backend
的be.INFO
日志,查找对应时间段内,tablet id
相关的日志,可以找到错误信息。 -
以下罗列一些常见的
tablet
创建失败错误,包括但不限于:-
BE
没有收到相关task
,此时无法在be.INFO
中找到tablet id
相关日志或者BE
创建成功,但汇报失败。以上问题,请参阅安装与部署检查FE
和BE
的连通性。 -
预分配内存失败。可能是表中一行的字节长度超过了
100KB
。 -
Too many open files
。打开的文件句柄数超过了Linux
系统限制。需修改Linux
系统的句柄数限制。
-
如果创建数据分片时超时,也可以通过在
fe.conf
中设置tablet_create_timeout_second=xxx
以及max_create_table_timeout_second=xxx
来延长超时时间。其中tablet_create_timeout_second
默认是1
秒,max_create_table_timeout_second
默认是60
秒,总体的超时时间为min(tablet_create_timeout_second * replication_num, max_create_table_timeout_second)
,具体参数设置可参阅FE
配置项。 -
-
建表命令长时间不返回结果。
-
Doris
的建表命令是同步命令。该命令的超时时间目前设置的比较简单,即(tablet num * replication num
)秒。如果创建较多的数据分片,并且其中有分片创建失败,则可能导致等待较长超时后,才会返回错误。 -
正常情况下,建表语句会在几秒或十几秒内返回。如果超过一分钟,建议直接取消掉这个操作,前往
FE
或BE
的日志查看相关错误。
-
1 更多帮助¶
关于数据划分更多的详细说明,我们可以在 CREATE TABLE
命令手册中查阅,也可以在 MySQL
客户端下输入 HELP CREATE TABLE;
获取更多的帮助信息。