2015-10-23 3 views
0

У меня есть сценарий R Shiny, который отлично работает на моем локальном компьютере Windows, но не удается, когда я его разворачиваю на shinyapps.io (что-то вроде unix like).RODBC на shinyapps. Ошибка подключения к базе данных Access (.mdb)

Первоначально я использовал: odbcConnectAccess('test.mdb'), но при развертывании, я получаю ошибку follwing:

Unhandled error in observer: could not find function "odbcConnectAccess"

я тестировал, и другие функции RODBC все еще работают. Так что я попробовал этот код (основанный на this post, что также случается, то, что внутренности odbcConnectAccess() возврат)

uid="" 
pwd="" 
con =paste("Driver={Microsoft Access Driver (*.mdb)};Dbq=", file.path(getwd(),'test.mdb'), ";Uid=", uid, ";Pwd=", pwd, ";", sep = "") 
conn=odbcDriverConnect(con) 

Опять же, это работает на моей локальной машине, но при развертывании на ShinyApps.io я получаю следующее сообщение об ошибке:

[RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specified

я также случайно попробовал odbcConnect(con), который дает следующее сообщение об ошибке:

Warning in odbcDriverConnect("DSN=Driver={Microsoft Access Driver (*.mdb)};Dbq=/srv/connect/apps/ALC_app_v0_1/Salvage_data_FTP.mdb;Uid=;Pwd=;") : 

[RODBC] ERROR: state IM012, code 0, message [unixODBC][Driver Manager]DRIVER keyword syntax error 

В справочной системе для odbcDriverConnect() упоминается, что формат строки подключения зависит от вашего ODBC, а Shinysapps.io, похоже, использует unixODBC, но я не могу найти, какой формат unixODBC хочет, чтобы я использовал, чтобы установить соединение?

Может ли кто-нибудь помочь мне выяснить, как открыть соединение с .mdb на shinyapps.io? Я не уверен. Если я смогу изменить файлы .ini на сервере shinyapps.io, так что я действительно надеюсь найти правильный формат/синтаксис, чтобы установить соединение без DSN.

Спасибо за любую помощь или обратную связь!

ответ

0

«... В настоящее время мы поддерживаем только базы данных с открытым исходным кодом на shinyapps.io, но мы наблюдаем, получаем ли мы больше запросов на собственные базы данных». От ShinyApps-User group. 10/23/2015

Таким образом, похоже, что в данный момент нет ответа. [ОБНОВЛЕНИЕ ВИДЕТЬ НИЖЕ]

Извините, что ответите на мой вопрос, но я собираюсь оставить его, так как потребовалось некоторое время, чтобы найти подтверждение, и это может спасти другим головную боль.

[UPDATE] «Энди поправил меня (пока в отпуске) и сообщит мне, что вы можете сделать эту работу с помощью драйвера FreeTDS. Я не эксперт по этому вопросу, но если вы измените код на что-то вроде это:

odbcDriverConnect("driver=FreeTDS;Server=hostname;database=dbname;uid=username;pwd=password") 

у нас нет никаких DSNs настроены, но вы можете увидеть советы о том, как сделать это здесь: Trying to connect to an ODBC server using RODBC in ubuntu "

Так что, похоже, как это возможно. Я обновлю, если я заработаю.

+0

Поскольку MS Access Jet/ACE - это механизм базы данных на уровне файлов, рассмотрите его параллельную версию с открытым исходным кодом SQLite, которая должна поддерживать целостность вашего рабочего процесса. Он легкий и не слишком тяжелый на ресурсах или устанавливает, и вы можете хранить базы данных по-прежнему в отдельных файлах, а не на уровне сервера, например, в MySQL, SQL Server, PostgreSQL, DB2, Oracle. – Parfait