【问题标题】:Turning off iODBC tracing关闭 iODBC 跟踪
【发布时间】:2011-10-11 21:04:45
【问题描述】:

我在 OS X 10.6.8 上使用我正在编写的 C 程序中的 MySQL (mysql-connector-odbc-5.1.8) 上的 iODBC,但跟踪所有 ODBC 库调用,这应该是默认关闭,开启。

我在/etc/Library/ODBC/ 中找到了一组odbc.iniodbcinst.ini 文件,但它们都不包含“Trace = yes”,并添加了一个带有“Tracing = no”的[ODBC] 部分" 对这些文件中的任何一个似乎都没有做任何事情。我的工作目录、主目录和其他任何地方也没有任何私有的.odbc.ini.odbcinst.ini 文件。

我可以关闭跟踪的唯一方法是在分配连接句柄后调用SQLSetConnectAttr()SQL_ATTR_TRACE 设置为SQL_OPT_TRACE_OFF,但此时跟踪文件sql.log 已经在工作目录。

任何有关跟踪打开跟踪的帮助(默认情况下应该关闭),或者如何关闭它以便永远不会创建日志文件,将不胜感激。

【问题讨论】:

  • 对于可能会看到这个的其他人:我通过将ODBCINI 环境变量设置为指向$HOME/.odbc.ini 解决了我的ODBC 跟踪问题,其中我在[ODBC] 部分设置TRACE=0 .这似乎按预期工作。当我没有这样做时,我仍然不知道为什么或在哪里打开了跟踪。

标签: macos odbc trace osx-snow-leopard


【解决方案1】:

我不确定您为什么要使用 odbc 而不是标准连接器,但是您是否尝试过在 odbc.ini 中将 TraceFile 的选项设置为 /dev/null。如果您无法让 Trace = OFF 自行工作,这至少可以删除文件。

[ODBC]
Trace = OFF
TraceFile = /dev/null

办公室里没有我的 Mac 来测试这个,但它似乎应该可以工作。

【讨论】:

  • “标准连接器”是什么意思?你的意思是使用 MySQL C API 吗?我希望能够替换在我的代码下使用的数据库实现,例如PostgreSQL 或 SQLite 将在未来的某个时候代替 MySQL。这就是我使用 ODBC 的原因。将跟踪文件设置为/dev/null 对我来说就像是一种黑客攻击,它可能会解决问题(还没有机会尝试),但这样做的方式最笨拙。我想了解为什么应该是默认设置(无跟踪)实际上不是默认设置。
  • ODBC 没有规范各种数据库供应商之间的 SQL 差异。你可能想看看使用某种类型的 ORM 并让它处理你的数据库抽象。然后,您可以随意滑入针对您的数据库品牌的优化连接器。我同意上述方法可能被认为是一种 hack,但是您再次说过您希望至少关闭文件创建。 :-) 干杯!
  • 您对可以在 UNIX C 应用程序中工作的 ORM 有什么建议吗?欢迎指点。我会接受你的回答,因为它仍然存在。谢谢/
  • libdbi 将是一个很好的起点。谢谢,祝你的项目好运!
  • 我现在正在使用 C++ 中的 Oracle 模板库 (OTL),通过其 ODBC 层访问 MySQL。我整理了跟踪问题(请参阅我对上面问题的评论)。还是谢谢你的指点!
【解决方案2】:

Mac OS X 上 ODBC 的默认设置文件位于 --

/Library/ODBC/odbc.ini
/Library/ODBC/odbcinst.ini
/Users/*/Library/ODBC/odbc.ini
/Users/*/Library/ODBC/odbcinst.ini

前两个用于系统级设置和 DSN;后者用于用户级别。

一些有缺陷的安装程序和库在 --

创建文件
/Users/*/.odbc.ini
/Users/*/.odbcinst.ini
/etc[/*]/.odbc.ini
/etc[/*]/.odbcinst.ini
/etc[/*]/odbc.ini
/etc[/*]/odbcinst.ini

这些可能会导致麻烦。该命令将显示所有潜在的麻烦文件--

sudo find / \( -name '.odbc*.ini' -or -name 'odbc*.ini' \) -ls

最好是 --

  1. 将现有非默认文件的内容混合到默认位置,并删除非默认文件
  2. 创建从有缺陷的 .odbc[inst].ini 位置到默认文件的符号链接
  3. 更新iODBC components on your Mac
  4. 享受无故障的 ODBC 使用

(ObDisclaimer:我是 OpenLink Software 的员工,他维护和支持 iODBC project,这是 Apple 为 Mac OS X 选择的 ODBC 驱动程序管理器,自 Jaguar (10.2.x) 以来捆绑在一起。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2021-10-22
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多