我最近在我的Windows 7 Ultimate x64家用机器上安装了SQL Server 2008 Express.我还有IIS 7.5和PHP 5.3,我试图通过ADODB连接到SQL ,但不断收到此错误:
[Microsoft][ODBC Driver Manager] The specified DSN contains an
architecture mismatch between the Driver and Application
Run Code Online (Sandbox Code Playgroud)
在互联网上进行少量挖掘之后,我认为这是因为SQL Server ODBC驱动程序适用于32位操作系统,而我的64位操作系统.首先,我是否正确?这是我遇到麻烦的原因吗?其次,如果是这样,我该如何解决这个问题呢?是否有任何更新的ODBC驱动程序可以与64位操作系统一起使用?我看了但是找不到任何......
我正在尝试在PHP中使用odbc_prepare和odbc_execute,如下所示:
$pstmt=odbc_prepare($odb_con,"select * from configured where param_name='?'");
$res=odbc_execute($pstmt,array('version'));
var_dump($res); //bool(true)
$row = odbc_fetch_array($pstmt);
var_dump($row); //bool(false)
Run Code Online (Sandbox Code Playgroud)
第一个var_dump返回true,因此执行成功,但没有返回任何行.param_name ='version'确实存在一行.为什么没有返回行?
为了让事情变得有趣,我使用准备好的插件在php中运行了另一个非常简单的示例.
$pstmt=odbc_prepare($odb_con,"insert into tmp1 values(?,'?')");
Run Code Online (Sandbox Code Playgroud)
这行本身就是在数据库中插入一行!! 当然这是错的?输入的数据是col 1 =空白,col 2 =?
任何关于从哪里开始修复此建议的建议将不胜感激,谢谢.
编辑:这是在PHP 5.2.8中
我正在寻找一个允许node.js连接到Windows上的ODBC的库.到目前为止我找到的所有库似乎都与UnixODBC一起工作但不是Windows,有人可以建议一个可以与Windows一起使用的库吗?
我需要帮助修复错误:SQL state IM014 in SQLConnect和SQL state IM002 in SQLConnect.
我运行相同的脚本,一个打开webserver/remote/,另一个从本地计算机尝试访问同一个数据库,但我得到不同的错误消息.
当我从网络服务器运行它我得到
SQL错误:[unixODBC] [驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序,SQL中的SQL状态IM002
当我在本地机器上运行时,我得到了
[Microsoft] [ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配
我在php脚本中使用以下代码连接到本地数据库
$odbc['dsn'] = "SageLine50v19";
$odbc['user'] = "Peac";
$odbc['pass'] = "XXXX";
$mysql['host'] = "localhost";
$mysql['user'] = "root";
$mysql['pass'] = "";
$mysql['dbname'] = "sagetest";
$mysql['idfield'] = "id";
// Step 1: Connect to the source ODBC database
if ($debug) echo "Connect to " . $odbc['dsn'] . ' as ' . $odbc['user'] . "\n";
$conn = odbc_connect($odbc['dsn'], $odbc['user'], $odbc['pass']);
if (!$conn) { …Run Code Online (Sandbox Code Playgroud) 我安装了psqlODBC,当我转到控制面板 - >数据源(ODBC)时,我没有看到安装了Postgres驱动程序.
我重新启动,仍然没有.
然后我注意到,如果我从文件中启动此控制面板小程序,则会c:\WINDOWS\system32\odbccp32.cpl突然出现驱动程序!
这发生在XP 64位机器上.
我无法解释为什么会这样,或者它的含义是什么.
从控制面板启动时,rundll32的命令行是:
"rundll32.exe" shell32.dll,Control_RunDLL "c:\WINDOWS\system32\odbccp32.cpl",
Run Code Online (Sandbox Code Playgroud)
(此数据来自Process Explorer)
odbccp32.cpl从命令行启动时:
"C:\WINDOWS\system32\rundll32.exe" C:\WINDOWS\system32\shell32.dll,Control_RunDLL "C:\WINDOWS\system32\ODBCCP32.CPL",@0
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我目前正在运行第三方软件套件,它使用SQL Server作为其数据库.我有一个在不同位置运行的第二个SQL Server实例,我在该实例中构建的一些应用程序SQL Server需要访问第三方软件中的某些数据.因此,我在框之间创建了一个ODBC连接,并在我的SQL Server版本上将第三方SQL服务器设置为链接服务器.作为测试,我从我的SQL服务器运行以下语句,访问第三方表之一:
SELECT * FROM LinkedServerName.SchemaName.dbo.TableName
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
OLE DB error trace [Non-interface error: Column 'TableRowVersion' (compile-time
ordinal 4) of object '"SchemaName"."dbo"."TableName"' was reported to have a
DBCOLUMNFLAGS_ISROWVER of 0 at compile time and 512 at run time].
Msg 7356, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' supplied inconsistent metadata for a column. Metadata
information was changed at execution time.
Run Code Online (Sandbox Code Playgroud)
对于我尝试访问的任何其他表,此错误都是相同的.这个错误意味着什么,是否有办法绕过它?
当我将开发平台从Windows XP X86移动到Windows 7 X64时,我收到以下ODBC异常:
ERROR [IM014] [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application
Run Code Online (Sandbox Code Playgroud)
我确定这意味着它连接的服务器是32位,我运行的计算机是64位,使用的ODBC驱动程序是64位.
我正在编写的应用程序设置为以32位模式运行,因为我们使用的某些第三方软件不是64位兼容的.
我尝试下载32位驱动程序并更改DSN,但它没有解决我的问题.我仍然得到例外.
如果任何人有任何32位SQL驱动程序的链接,或任何关于我如何通过改变项目来解决这个问题的想法,我都听到了.
提前致谢,
-Jrud-
我在Linux Debian 6 x64上安装了Apache 2.2.16和PHP 5.4.3.
要为Linux安装MSSQL Server的本机ODBC驱动程序,我用了以下说明: http://www.codesynthesis.com/~boris/blog/2011/12/02/microsoft-sql-server-odbc-driver-linux/
我这样配置我的odbc.ini文件:
[mydsn]
Driver = SQL Server Native Client 11.0
Database = datbase
Server = xxx.xxx.xxx.xxx,port
Run Code Online (Sandbox Code Playgroud)
和我的odbcinst.ini这样:
[SQL Server Native Client 11.0]
Description=Microsoft SQL Server ODBC Driver V1.0 for Linux
Driver=/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0
Threading=1
UsageCount=1
Run Code Online (Sandbox Code Playgroud)
要测试,我运行以下命令:
$ isql -v mydsn dbusername dbpassword
Run Code Online (Sandbox Code Playgroud)
我成功了:
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
Run Code Online (Sandbox Code Playgroud)
然后,使用phpize在PHP 5.4上安装unixODBC,使用:(使用第一个命令,ln -s ...,因为./configure在默认位置找不到php的头文件)
$ sudo ln -s /usr/include/php5 /usr/include/php
$ …Run Code Online (Sandbox Code Playgroud) 我通过.NET应用程序中的ODBC驱动程序连接到Hive.是否有查询来确定表是否已存在?
例如,在MSSQL中,您可以查询INFORMATION_SCHEMA表,在Netezza中,您可以查询_v_table表.
任何援助将不胜感激.
介绍.我的laravel应用程序使用的是mysql,现在它需要托管在我正在工作的公司的网络中(我是一名远程工作者).这家公司是微软的,所以我需要将laravel集成到他们的SQL Server中.
我的.env中有这个
DB_CONNECTION=sqlsrv
DB_HOST=ip.address.of.server
DB_PORT=3306
DB_DATABASE=my_db
DB_USERNAME=my_username
DB_PASSWORD=my_password
Run Code Online (Sandbox Code Playgroud)
使用完毕后 php artisan migrate
错误:
[PDOException]
could not find driver
Run Code Online (Sandbox Code Playgroud)
我正在使用Ubuntu,一个专用于我的远程盒子(来自我的雇主).我之前尝试在我的laravel应用程序中使用sql server(使用我的Windows PC).据我记得,我在xampp php.ini中编辑了一些文本.作为一个新手Linux用户,对我来说太难了(因为我只使用CLI).
EDITED(新版本)
所以我已经从Ubuntu连接到数据库服务器了.我用了sqlcmd -S <host> -U <username>
我测试了查询(例如SELECT * from users_data)并且它有效.
现在,我修改了config/database.php,我添加了这个.
'sqlsrv' => [
'driver' => 'MSSQL',
'host' => env('DB_HOST', 'host.of.the.database'),
'database' => env('DB_DATABASE', 'my_database'),
'username' => env('DB_USERNAME', 'my_username'),
'password' => env('DB_PASSWORD', 'my_pass'),
'port' => '1433',
'prefix' => '',
],
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误:
[InvalidArgumentException]
Unsupported driver [MSSQL]
Run Code Online (Sandbox Code Playgroud)
"MSSQL"是我用来配置FreeTDS的名称.