Доступ к MySQL из Perl с помощью ODBC - PullRequest
1 голос
/ 09 декабря 2011

Мне нужно получить доступ к MySQL из Perl.

Можно ли подключиться с помощью драйвера odbc?

Если так, как мне это сделать?

Я просто не могу правильно понять строку подключения!

В Windows, где доступно DBD:MySQL, я подключился следующим образом:

DBI->connect("DBI:mysql:$database", 
    $user, $password, {RaiseError => 1});

Вот что я пробовал:

DBI->connect("DBI:ODBC:$database", $user, $password, {RaiseError => 1});'

Это приводит к следующей ошибке:

Не удалось подключиться к DBI («база данных», «имя пользователя», ...): [iODBC] [Driver Manager] Не найдено имя источника данных и не указан драйвер по умолчанию. Не удалось загрузить драйвер (SQL-IM002) в строке -e 1

Это стандартное соединение на локальном компьютере, то есть и приложение perl, и сервер MySQL находятся на одном компьютере.


Я бы хотел использовать odbc, потому что DBD:mysql не собирает для Perl ActiveState в Mac OS X, и нам намного легче, когда мы придерживаемся пакетов, которые можно получить через частей на миллион.

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Вы пробовали включить порт?

http://www.connectionstrings.com/mysql#p0cs1

Кроме того, для ODBC может потребоваться указать драйвер, если вы не собираетесь предварительно настроенный DSN

DBI->connect( join( ';'
    , 'DBI:ODBC:driver={MySQL ODBC 5.1 Driver}'
    , "Server=$SQL_SERVER"
    , "Database=$SQL_DATABASE"
    , "UID=$SQL_USERID"
    , "PWD=$SQL_PASSWD"
    ));
1 голос
/ 09 декабря 2011

Ваша база данных $ не является базой данных, это имя источника данных (DSN).«dbi: ODBC: xxx» следует читать как «dbi: ODBC: DSN = xxx», а менеджер драйверов iODBC будет искать DSN с именем «xxx» в своих файлах конфигурации.Поскольку вы работаете на Mac, должно быть приложение с графическим интерфейсом для источников данных, которое вы можете использовать для создания DSN или, альтернативно, вам нужно будет найти ini-файлы iODBC и вставить их самостоятельно (iodbc.ini и iodbcinst.ini, я думаю или, возможно, без'i').

"Имя источника данных не найдено и драйвер по умолчанию не указан" обычно означает, что источник данных xxx не может быть найден в INI-файлах (есть пользовательские и системные), однако этот завершающий "драйвер можетне быть загруженным (SQL-IM002) "предполагает, что библиотека драйвера ODBC для mysql не может быть загружена, и, следовательно, ваш DSN существует, но он указывает либо на недопустимую библиотеку драйвера ODBC для MySQL, либо на сломанную.Здесь снова приложение GUI позволяет вам добавлять / редактировать драйверы или вам нужно найти файл iodbcinst.ini и посмотреть, на что указывает атрибут Driver для драйвера mysql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...