我需要根据选择的结果类型在其他数据库中创建表。查询结果可以映射到表中的实际列,也可以不映射到 fe Select 1, c from char_length_test
。
如何在使用 mysql C api 的 select 语句后获取实际列大小?
我创建了这样的表:
CREATE TABLE char_length_test (c char(22))
并mysql_real_query
用于执行此查询
SELECT c from char_length_test
之后,我执行mysql_fetch_fields
以获取c
字段长度并期望它为 22,就像在 create table 语句中一样。不幸的是,长度包含 66 的值(比我预期的多 3 倍)。尝试了不同的尺寸,但结果是一样的,长度总是大 3 倍。
还使用 gdb 查看是否有任何其他包含预期值的数据字段:
{
name = "c",
org_name = "c",
table = "char_length_test",
org_table = "char_length_test",
db = "database",
catalog = "def",
def = 0x0,
length = 66,
max_length = 0,
name_length = 1,
org_name_length = 1,
table_length = 16,
org_table_length = 16,
db_length = 6,
catalog_length = 3,
def_length = 0,
flags = 0,
decimals = 0,
charsetnr = 33,
type = MYSQL_TYPE_STRING,
extension = 0x0
}