我试图在Ubuntu上运行以下测试程序,以便使用即时客户端OCCI库连接到oracle数据库。
#include <iostream>
#include <occi.h>
using namespace oracle::occi;
int main() {
Environment *env = Environment::createEnvironment(Environment::DEFAULT);
Connection *conn = env->createConnection( "user", "1234" );
env->terminateConnection(conn);
Environment::terminateEnvironment(env);
}编译时没有错误。
g++ main.cpp -L ~/instantclient_12_2 -locci -lclntsh -I ~/instantclient_12_2/sdk/include但是当我跑的时候
terminate called after throwing an instance of 'oracle::occi::SQLException'
what(): ORA-24960: the attribute OCI_ATTR_USERNAME is greater than the maximum allowable length of 255
Aborted我运行的Ubuntu16.04,gcc 5.4.0,我得到了同样的结果与即时客户端11.2和12.2。
以前有人问过这个问题:https://stackoverflow.com/questions/40022118/ora-24960-the-attribute-oci-attr-username-is-greater-than-the-maximum,但是这个答案不适用于linux (或者我漏掉了重点)。
任何帮助都将不胜感激。
发布于 2017-03-19 21:51:12
通过恢复到旧的编译器解决了这个问题。
$ sudo apt-get install g++-4.8
$ g++-4.8 main.cpp -L ~/instantclient_12_2 -locci -lclntsh -I ~/instantclient_12_2/sdk/include也许最新的编译器和库与用于构建OCCI库的编译器和库不兼容。
发布于 2017-08-18 08:24:31
如果您使用的是CMake
1)在CMakeLists.txt上添加这一行以指定要使用的编译器
SET(CMAKE_CXX_COMPILER /usr/bin/g++-4.8)
你可能需要安装g++-4.8
(apt-get install g++-4.8)发布于 2022-07-27 13:29:19
还有助于使用-D_GLIBCXX_USE_CXX11_ABI=0标志。
https://stackoverflow.com/questions/42890553
复制相似问题