<< 点击显示目录 >> 主页 mappServices帮助手册 > mapp Database: 连接数据库 > 诊断 > FAQs |
mapp Services V5.16
以下部分包含了在建立mapp Database和数据库之间的连接时可能出现的问题的答案。
mapp Database和数据库之间的通信,必须有一个服务器处于活动状态。为此要启动一个脚本。关于这个话题的更多信息,请看这里。
命令窗口也可以用来进行诊断。它在脚本启动后立即出现。从这个命令窗口中,你总是可以得到额外的信息,如这里所示:
要检查是否使用了正确的软件版本,见"软件版本"下的一般条件一节
如果显示错误 "SQL服务器错误(-1064167424)" 或 "HTTP服务器错误(-1064167423)" ,这可能有不同的原因。在这种情况下,应始终检查命令窗口以获得更多信息。
这些错误可能有以下原因:
•端口已被使用:数据库的端口号必须在MpDatabaseCore配置中指定。这个端口号也会在脚本中指定。如果该端口已经被其他程序使用,必须终止该程序或使用不同的端口号。在命令窗口中会显示以下信息:
•没有安装所需的连接器:安装服务器一节 解释了为了启动服务器,必须安装连接器。检查它们是否已经被安装。命令窗口中出现一条消息,说明缺少所需的连接器。
•脚本中的端口或IP地址不正确:必须检查脚本以确定是否为数据库指定了正确的端口号和IP地址。在命令窗口中会出现以下信息:
•登录失败:有必要检查在MpDatabaseCore配置中是否输入了正确的数据库用户名和密码。如果输入了错误的登录信息,命令窗口中会显示以下内容:
•连接器的更新:例如,如果使用新的数据库版本,连接器的版本可能也需要更新。这应该被检查。根据所使用的数据库,命令窗口将显示连接器认证失败。
•Microsoft SQL Server:有必要确保在启动Microsoft SQL Server时选择"SQL服务器认证"作为认证类型:
否则,就不可能以 MpDatabaseCore配置中定义的用户身份登录 !
•防火墙:有必要确保正在使用的防火墙不会阻止连接!根据防火墙的反应, 在 MpDatabaseCore 中可能会触发 错误 "HTTP服务器错误(-1064167423)"。
•缺少的软件:如果使用Microsoft SQL Server作为数据库系统,并在命令行界面显示以下信息:
"例外: code IM002, 信息 [IM002] [Microsoft][ODBC Driver Manager] 没有找到数据源名称,也没有指定默认驱动程序 (0) (SQLDriverConnect) "
必须安装Microsoft SQL Server 本地客户端!这可以在这里下载。
较早的Microsoft SQL Server 本地客户端版本,如2012,可用于较新的Microsoft SQL Server版本,如2017!
•加密的密码:在 MpDatabaseCore配置中使用加密的密码时 ,必须确保它们不被操纵。这意味着不允许添加或删除任何字符,例如。否则,使用的加密密码是无效的,无法建立与数据库的连接。欲了解更多信息,请参见 这里的 "配置中的密码加密 "部分。
查询可以使用MpDatabaseQuery来执行。如果在启动查询时显示功能块错误,应检查以下内容:
•查询失败:应该检查MpDatabaseCore配置中定义的查询。确保所需的数据库表已经被正确指定。用户定义的查询(查询类型="自定义")的有效性不能由mapp Database检查。必须进行检查以确保查询被正确指定。关于指定SQL查询的其他信息,见这里。
在查询失败的情况下,额外的信息总是显示在记录器中!
•Microsoft SQL Server查询。如果查询是在Microsoft SQL Server上执行的,有必要确保执行查询是允许的。默认情况下,这是不允许的。这可以在服务器设置中完成(在 "用户映射 "下)。
如果在MpDatabaseCore上执行"Connect = TRUE"命令后,输出参数状态仍为"CommandBusy = TRUE",这可能有以下原因:
•指定的端口不正确:如果在脚本中指定了一个不正确的端口,根据所使用的数据库,输出参数 "CommandBusy"有可能始终保持TRUE。
•防火墙:有必要确保正在使用的防火墙不会阻止连接!这一点很重要。根据防火墙的反应,在MpDatabaseCore 中可能会触发错误"HTTP服务器错误(-1064167423)"。有可能是防火墙阻止了连接,但没有提醒用户。因此,MpDatabaseCore上的输出参数"CommandBusy"有可能总是保持为TRUE。
在命令行界面上出现各种信息。这里解释了命令行界面中的条目的原因和解决办法:
默认值
如果在命令行界面出现以下/类似的信息:
那么就没有为指定的列定义默认值。如果在查询中使用的过程变量没有涵盖所有的列名,那么就会发生这个错误。欲了解更多信息,请参见查询类型中的"指定变量"一节 。
必须为该列定义一个默认值。当创建一个新的表时,它可以看起来像这样:
CREATE TABLE t1 (
i INT DEFAULT -1,
c VARCHAR(10) DEFAULT '',
price DOUBLE(16,2) DEFAULT 0.00
);
关于如何编辑现有表的信息,请参见所使用的数据库系统的文档。
另一个原因可能是在创建表的时候为某一列定义了"NOT NULL"。这意味着不能为该列指定空值。在查询中使用的过程变量必须考虑到这一点!
缺失列
如果在命令行界面出现以下/类似的信息:
然后在查询中使用了一个包含与表内任何列不匹配的变量的过程变量。更多信息请参见 查询类型中的 "指定变量 "一节 。必须调整正在使用的PV,以便不再出现错误信息。
Version conflict
如果在命令行界面出现以下/类似的信息:
使用的mapp Service版本与使用的脚本版本不兼容。
当脚本被启用时,会额外检查所使用的mapp服务版本是否与所使用的脚本版本兼容。哪个脚本版本可以和哪个mapp Service版本一起使用,在定义Python脚本一节中列出 。
如果在脚本版本≥5.12时使用了不兼容的版本,将直接通过命令行界面通知用户。
当使用 mapp Services ≥V5.12.0 时,在Logger和功能块MpDatabaseCore上会额外显示 错误 Versions not compatible。
为防止该消息发生,必须使用兼容的版本。
如果在执行脚本的计算机上出现以下弹出窗口,并对MpDatabaseCore进行"Connect= TRUE" 。
该窗口可以通过点击"Cancel"来关闭;与数据库的连接已经建立,没有任何问题。
一旦隐藏驱动器与Python结合使用,就可能出现弹出窗口:
mapp Database的功能不受任何影响。与数据库的连接已经建立,可以进行查询。