我正在编写一个与MySQL数据库交互的Go程序。在MySQL中,当您执行LOAD DATA查询时,除了常规的X rows affected行之外,还会得到一个包含更细粒度信息的行:
mysql> LOAD DATA LOCAL INFILE 'many-lines.tsv' REPLACE INTO TABLE test_table (id, timestamp);
Query OK, 6 rows affected (0.01 sec)
Records: 3 Deleted: 3 Skipped: 0 Warnings: 0“语句结果信息”部分下的As documented here。
我很希望能够通过我的Go程序访问它,但我不知道如何访问,甚至不知道它是否可能。sql.DB.Exec() returns a Result,但是那个only has a RowsAffected field。这包含写入的行数+删除的行数,并忽略跳过的行数,因此是不明确的(write 3、delete 2和skip 2与write 5、delete 0和skip 0相同)。
我找遍了documentation for the Go MySQL driver,但是找不到我想要的东西。
有没有办法获取这些信息?
发布于 2020-12-04 10:15:49
该信息实际上是服务器的ER_LOAD_INFO“错误”(名义上是信息)消息。
这将作为信息消息在OK response中从服务器传递。
看一下OK packet in go的解码过程,它并没有解析出info (human readable status information)。建立连接时,请确保clientSessionTrack是连接标志的一部分。
因此,只要对Go MySQL驱动程序进行一些小的增强,您就可以访问它了。
https://stackoverflow.com/questions/65136607
复制相似问题