使用chatglm 通过langchain调用tidb数据库时有问题改成mysql就好了

具体报错sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 12 near “请求模型” ')
[SQL: 请求模型]

两个库的字符集分别是什么

1 个赞

代码里面找一下 报错的 sql 语句,然后在 tidb 里面运行一下就知道哪里不兼容 mysql 了

2 个赞

去dashboard的日志搜索,搜索关键字“command dispatched failed”关键字,可以找到报错的SQL

2 个赞

语法支持的问题

应该是数据库编码问题 换其他的库就没问题了 这个数据库没有设置字符集编码

1 个赞

我这儿用的sqldatabasechain去交互的 没有和具体的SQL语句有关联

大佬 tidb和flink 老是出现这个报错 但过会儿就好了 是tidb哪个配置有问题呢

https://github.com/ververica/flink-cdc-connectors/blob/7ea197242f82d1f63f0e10c6c79ed283f2f7adb7/flink-cdc-connect/flink-cdc-source-connectors/flink-connector-tidb-cdc/src/main/java/com/ververica/cdc/connectors/tidb/TiKVRichParallelSourceFunction.java#L104

你在tidb这里问其他中间件没有问题。
好歹提供一下flink-cdc-connectors版本信息。
至少看上去,现在已经不是这么写的了。

用的tidb 7.3, flink 1.17, flink-sql-connector-tidb-cdc 2.2.1, cdc用比2.2.1之后的版本就会出现cpu一直都是高占用的情况

1 个赞

https://github.com/ververica/flink-cdc-connectors/blob/release-2.2.1/flink-connector-tidb-cdc/src/main/java/com/ververica/cdc/connectors/tidb/TiKVRichParallelSourceFunction.java#L104C1-L104C83

long tableId = session.getCatalog().getTable(database, tableName).getId();

是获取tableid的时候报空指针了。

现在不确定是那个位置有空指针了。
报错的堆栈里面有其他的异常吗?

现在看下来tisession里面会判断这个session是否已经被关闭。

https://github.com/tikv/client-java/blob/v3.2.0/src/main/java/org/tikv/common/TiSession.java#L683

会不会是session过期的问题?


这种情况都是在初始化的时候直接失败

还有就是你的这个表会不会是个视图。

https://github.com/tikv/client-java/blob/v3.2.0/src/main/java/org/tikv/common/catalog/Catalog.java#L176

  // https://github.com/pingcap/tispark/issues/961
  // TODO: support reading from view table in the future.

看到注释说这里不支持视图。