У меня есть 32-битная БД Oracle (версия 9i — 9.2.0.7.0), 64-битный Mac, и я пытаюсь подключиться к нему, используя go-oci8 с помощью Go Lang (версия go1.11.1 darwin/amd64).
Я использовал SQL-Developer 4.0 .2, чтобы успешно подключиться к БД, а затем включить подключение InstantClient через нее, используя этот учебник. Итак, у меня все работает со стороны Oracle Client.
Я использую InstantClient версии 11.2.0.4.0 (32-разрядная версия) для MacOS (базовая версия и SDK), в основном я использовал этот учебник почти успешно. После всего, ошибка, которую я получаю:
github.com/mattn/go-oci8 ld: warning: ignoring file /Users/myusername/Downloads/instantclient_11_2/libclntsh.dylib, file was built for i386 which is not the architecture being linked (x86_64): /Users/myusername/Downloads/instantclient_11_2/libclntsh.dylib Undefined symbols for architecture x86_64:
А затем длинная стопка символов. В основном библиотека Go oci8 пытается использовать C (который является 64-битным) и пытается создавать 64-битные файлы, которые затем будут использоваться Go. Если я попытаюсь использовать 64-битную версию InstantClient, у меня не будет проблем, но я получу ошибку «драйвер: плохое соединение», потому что 64-битная версия не будет работать для подключения по какой-то причине.
Я понятия не имею, что делать, чтобы решить эту проблему - могу ли я каким-то образом заставить сборку 32-битных файлов использовать go get -u -v github.com/mattn/go-oci8
? Или как-то подключить 64-битную версию InstantClient к старой 32-битной БД Oracle?
Любая помощь в том, как заставить это работать, будет высоко оценена.
Редактировать: я пробовал 10.2 Oracle Client, но я не могу подключить его к go-oci8 (я предполагаю, что он его не поддерживает). Я получаю ошибку ../github.com/mattn/go-oci8/oci8.go:113:25: could not determine kind of name for C.OCI_SYSASM
Последнее редактирование для тех, у кого такая же проблема (переход к очень старой базе данных Oracle) — вы не можете взаимодействовать с готовыми решениями с помощью Go. Библиотеки, перечисленные для работы с Oracle, работают с версиями клиента 11.2 и выше.