使用 MonetDBLite C API 连接到现有的数据库场
Posted
技术标签:
【中文标题】使用 MonetDBLite C API 连接到现有的数据库场【英文标题】:Connecting to an existing db farm using MonetDBLite C API 【发布时间】:2018-10-09 07:35:49 【问题描述】:我有一个使用数据库(例如:temp)创建的数据库场。当我尝试使用 monetdb_startup 连接时,出现以下错误。
src/gdk/gdk_utils.c:1465: GDKfree: 断言 `(asize & 2) == 0' 失败。 中止(核心转储)
-
我正在使用提供的示例应用程序 tests/readme/readme.c。
monetdb_startup("/dbfarm/temp", 0, 0) 是我想要做的。
正在使用的 Monet 版本:
MonetDB 5 服务器 v11.29.3 “Mar2018”(64 位、128 位整数)
堆栈跟踪:
#0 0x0000003f39232495 in raise () from /lib64/libc.so.6
#1 0x0000003f39233c75 in abort () from /lib64/libc.so.6
#2 0x0000003f3922b60e in __assert_fail_base () from /lib64/libc.so.6
#3 0x0000003f3922b6d0 in __assert_fail () from /lib64/libc.so.6
#4 0x00007ffff799bc3c in GDKfree (s=0x19602e0) at src/gdk/gdk_utils.c:1465
#5 0x00007ffff79a8521 in freeException (msg=0x19602e0 '▒' <repeats 88 times>, "▒L\001") at src/mal/mal/mal_exception.c:135
#6 0x00007ffff7b38c09 in SQLupgrades (c=0x7ffff42b2400, m=0x1815460) at src/mal/sqlbackend/sql_upgrades.c:1442
#7 0x00007ffff7b1edb2 in SQLinitClient (c=0x7ffff42b2400) at src/mal/sqlbackend/sql_scenario.c:612
#8 0x00007ffff7404f32 in monetdb_connect () at src/embedded/embedded.c:72
#9 0x00007ffff74055da in monetdb_startup (dbdir=0x7fffffffd7c0 "/dbfarm/temp/", silent=0 '\000', sequential=0 '\000')
at src/embedded/embedded.c:162
谢谢
【问题讨论】:
所以数据库是使用 MonetDB 创建的,而您正在尝试使用 MonetDBLite 连接到它? 是的。在调试时,发现执行方法sql_update_mar2018时出现异常(解析错误),特别是在执行时,我猜是元数据sqls。我避免调用 sql_update_mar2018 并且它有效。我能够看到现有 dbfarm 中的表。但不确定这个解决方案。如果有帮助,我可以获得确切的堆栈跟踪。 【参考方案1】:一般来说,不支持此用例。因此,在版本之间升级 MonetDBLite 数据库应该可以正常工作,但是从 MonetDBLite 移动到 MonetDB 并返回可能会出现错误和/或崩溃。
【讨论】:
以上是关于使用 MonetDBLite C API 连接到现有的数据库场的主要内容,如果未能解决你的问题,请参考以下文章
从 MonetdbLite C API 使用 monetdb_append
为啥在连接到 mailchimp API 3.0 时出现 401 错误