标签: odbc

从docker容器连接到远程MySQL数据库

我正在努力将一个Django 1.5.x应用程序容器化,该应用程序通过ODBC连接到单独服务器上的MySQL数据库:

[mysql_default]
database = DB_NAME
driver = /usr/lib64/libmyodbc5.so
server = REMOTE_DB_SERVER
user = DB_USER
password = DB_USER_PWD
port = 3306
Run Code Online (Sandbox Code Playgroud)

我能够通过端口转发和SSH连接到远程数据库,在我的本地机器(docker之外)上运行Django应用程序:

 ssh -L 3307:127.0.0.1:3306 MYID@REMOTE_DB_SERVER
Run Code Online (Sandbox Code Playgroud)

我使用Centos 6.x为应用程序设置了Docker容器,但无法使MySQL连接正常工作.容器安装了MySQL并运行了mysqld.

我的docker-compose.yml文件如下所示:

version: "2"
services:
  web:
    build: .
    image: MY_IMAGE
    container_name: MY_CONTAINER
    network_mode: "host"
    ports:
      - "3307:3306"
    command: /bin/bash
Run Code Online (Sandbox Code Playgroud)

在容器运行的情况下,我可以执行以下命令(在容器外部)以在远程数据库上显示数据库:

docker exec MY_CONTAINER echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3307
Run Code Online (Sandbox Code Playgroud)

但是从容器内部,同样的命令失败:

    echo "show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3306

ERROR 2003 (HY000): Can't connect to MySQL …
Run Code Online (Sandbox Code Playgroud)

mysql odbc docker

14
推荐指数
2
解决办法
4万
查看次数

从Select语句中获取行数

我有这个:

$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$mdbFilename", $username, $password);

$sql = "SELECT * FROM this_table";

$stmt = $dbh->query($sql);

//num of rows?
Run Code Online (Sandbox Code Playgroud)

如何获取从该SELECT语句返回的行数?

谢谢大家

php sql odbc pdo count

13
推荐指数
2
解决办法
2万
查看次数

MySQL ODBC连接字符串中的Option = N是什么?

我已经看到了这两个Option=3Option=4连接字符串样品中的MySQL ODBC,但没有解释或文件.这些数字是什么意思?

mysql asp.net odbc connection-string

13
推荐指数
1
解决办法
8874
查看次数

Ruby连接到SQL Server

我在将Ruby连接到Microsoft SQL Server时遇到了麻烦.我正在运行Mac OS X,但目标环境是Ubuntu Linux.

这是我尝试过的:

  • 安装unixODBC
  • 安装FreeTDS
    • 使用了选项 --with-unixodbc=/usr/local/etc --with-tdsver=8.0

然后我将这些文件放在/usr/local/etc:

  • odbc.ini
  • odbcinst.ini
  • freetds.conf

我在odbcinst.ini文件中将FreeTDS驱动程序的引用添加到我的ODBC驱动程序文件中,如下所示:

;
; odbcinst.ini
;
;
[FreeTDS]
Driver = /usr/local/lib/libtdsodbc.so
Run Code Online (Sandbox Code Playgroud)

然后我在freetds.conf文件中配置服务器,如下所示:

# Aries database server (SQL Server 2008)
[aries-db1]
        host = xx.xx.xx.xx
        port = 1433
        tds version = 8.0
Run Code Online (Sandbox Code Playgroud)

最后我在odbc.ini文件中添加了ODBC DSN,如下所示:

[aries-db1]
Driver      =   FreeTDS
Description =   ODBC Connection via FreeTDS
Trace       =   1
Servername  =   aries-db1
Database    =   MY_DB
UID         =   user1
PWD …
Run Code Online (Sandbox Code Playgroud)

ruby sql-server odbc unixodbc freetds

13
推荐指数
1
解决办法
2万
查看次数

如何捕获特定的pyodbc错误消息

我做了以下代码,

import pyodbc
try:
    pyodbc.connect('DRIVER={%s};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s' % (driver, server, database, uid, password))
except pyodbc.Error, err:
    logging.warn(err)
Run Code Online (Sandbox Code Playgroud)

我得到的错误消息格式是

('HY000', "[HY000] [MySQL][ODBC 5.1 Driver]Access denied for user 'root'@'192.168.2.27' (using password: YES) (1045) (SQLDriverConnect)")
Run Code Online (Sandbox Code Playgroud)

我想只收到错误的消息部分即

Access denied for user 'root'@'192.168.2.27'(using password: YES)
Run Code Online (Sandbox Code Playgroud)

我不知道我是否可以特别注意错误,找不到驱动程序,主机关闭等等.

我也尝试捕获错误:

 except pyodbc.OperationalError, err:
    logging.warn(err)
except pyodbc.DataError, err:
    logging.warn(err)
except pyodbc.IntegrityError, err:
    logging.warn(err)
except pyodbc.ProgrammingError, err:
    logging.warn(err)
except pyodbc.NotSupportedError, err:
    logging.warn(err)
except pyodbc.DatabaseError, err:
    logging.warn(err)
except pyodbc.Error, err:
    logging.warn(err)
Run Code Online (Sandbox Code Playgroud)

但最后一个总是捕获错误.

Fruthermore我看到pyodbc.Error.message总是空的.我怎样才能在错误中得到消息.

谢谢

python odbc pyodbc

13
推荐指数
3
解决办法
3万
查看次数

如果连接ODBC,MS Access是否支持"CASE WHEN"子句?

ODBC支持CASE WHENMS Access的子句吗?是否有其他数据库不支持该CASE WHEN条款?我在使用ODBC连接到MS Access时尝试了以下查询,但获得了异常.

SELECT (CASE WHEN (AGE > 10) THEN 1 ELSE 0 END) FROM demo

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression '(CASE WHEN (AGE > 10) THEN 1 ELSE 0 END)'

我试图找到一种适用于大多数数据库的通用方法,以便在与ODBC连接时使用比较表达式生成(计算)新的"布尔列".实际上,MS Access支持SELECT子句中的比较,但对于其他一些数据库,则需要CASE子句.对于MS Access,SQL可以

SELECT AGE > 10 FROM demo

但在其他方面则必须如此

SELECT (CASE WHEN (AGE > 10) THEN 1 ELSE 0 END) FROM demo

sql database ms-access odbc

13
推荐指数
2
解决办法
10万
查看次数

SELECT和INSERT的OPENQUERY有何不同?

我知道以下查询将从链接服务器下拉结果集:

SELECT * FROM openquery(DEVMYSQL, 
    'SELECT event_id, people_id, role_id, rank, last_updated FROM event_cast')
Run Code Online (Sandbox Code Playgroud)

但是,在插入时这是同样的情况吗?它会下拉结果集还是仅获取列信息?

INSERT INTO openquery(DEVMYSQL, 
     'SELECT event_id, people_id, role_id, rank, last_updated FROM event_cast')
Run Code Online (Sandbox Code Playgroud)

如果是前者,那么这是非常低效的.我应该限制返回的结果集,这会影响我INSERT吗?

这基本上是如何的一个问题OPENQUERY,当谈到工作SELECTINSERT.

我感谢任何帮助.

mysql t-sql sql-server odbc linked-server

13
推荐指数
2
解决办法
6万
查看次数

通过Access中的ODBC链接表更新SQLite数据库

我遇到了SQLite数据库的问题.我正在使用http://www.ch-werner.de/sqliteodbc/中的SQLite ODBC . 安装了64位版本并使用以下设置创建了ODBC:

在此输入图像描述

我打开Access数据库并链接到数据源.我可以打开表,添加记录,但不能删除或编辑任何记录.有没有什么我需要修复ODBC端允许这个?我尝试删除记录时遇到的错误是:

Microsoft Access数据库引擎停止了该过程,因为您和另一个用户正在尝试同时更改相同的数据.

当我编辑记录时,我得到:

自您开始编辑以来,其他用户已更改该记录.如果保存记录,则将覆盖其他用户所做的更改.

保存记录已禁用.只能复制到剪贴板或删除更改.

sqlite ms-access odbc ms-access-2010 sqlite-odbc

13
推荐指数
1
解决办法
6524
查看次数

在非Windows平台(Linux或Mac)上使用Python中的Access数据库

我想访问Microsoft Access数据库中的数据.我有一些.accdb和.mdb文件,想要用Python读取它们.

根据我的研究,pyodbc只能在Windows平台上使用,但我在Mac OS X上工作.我是Python的新手.

另一种选择是如果我可以将数据从数据库导出到csv然后在python中使用.

任何帮助或开始将受到高度赞赏.

python macos ms-access odbc pyodbc

13
推荐指数
2
解决办法
1万
查看次数

如何在Apache Drill中实现Mongo存储插件的INNER JOINS(下推)优化?

我想扩展Apache Drill Mongo存储插件来推送INNER JOIN.因此我想重写INNER JOIN为mongo聚合管道.

我们如何开始在Apache Drill中实现重写.

这是一个SQL示例:

SELECT *
FROM `mymongo.db`.`test` `test`
  INNER JOIN `mymongo.db`.`test2` `test2`
  ON (`test`.`id` = `test2`.`fk`)
WHERE `test2`.`date` = '09.05.2017'
Run Code Online (Sandbox Code Playgroud)

我已经找到了倒推WHERE在蒙戈存储插件条款.但我仍然在努力做同样的事情INNER JOINS.构造器public class MongoPushDownInnerJoinScan extends StoragePluginOptimizerRule看起来怎么样?我必须实现哪个MongoGroupScan(AbstractGroupScan)的等价物?任何帮助将非常感谢.

java odbc jdbc mongodb apache-drill

13
推荐指数
1
解决办法
213
查看次数