我有下面的代码尝试连接到IBM的Informix数据库。
public void MakeConnection()
{
string ConnectionString = "Database=databasename;Host=ipaddress;Server=servername;Service=port;Protocol = olsoctcp; UID = userid; Password = password;";
IfxConnection conn = new IfxConnection();
conn.ConnectionString = ConnectionString;
try
{
conn.Open();
}
catch (IfxException ex)
{
Console.WriteLine(ex.ToString());
}
Console.ReadLine();
}
打开连接时出现以下错误。
错误[HY000] [Informix .NET提供程序] [Informix]数据库区域设置信息不匹配。
当我尝试使用windows ODBC Data sources
应用程序进行连接时,通过在用户DSN下创建新的用户数据源并在Informix ODBC driver setup
的每个部分下提供所有必要的值,我就能成功连接。
我所了解的是,客户端应用程序和数据库的Database Locale
值应正确执行查询,并且我尝试在用户DSN的配置中使用en_US.57372 and en_US.UTF8
DB Locale来很好地工作。我在这里发布图片以更好地理解。
赞赏是否有人可以帮助我知道我在哪里可以找到Informix数据库中配置的DB Locale,还可以详细了解导致此错误的真正原因。
答案 0 :(得分:0)
最终能够从测试应用程序连接到数据库!好的,我们开始吧
步骤1: 首先,我们需要找到该数据库允许我们使用的哪种数据库语言环境?因此,按照他在评论部分提到的 @Luis Marques 的方法,发现使用的Database Locale
是en_US.57372
,也支持en_US.UTF8
。
步骤2: 默认情况下,连接对象的client locale and database locale
属性值将是安装Informix ODBC driver
时设置的默认值。>
按如下所示略微修改了我的测试应用代码,
public void MakeConnection()
{
string ConnectionString = "Database=databasename;Host=ipaddress;Server=servername;Service=port;Protocol = olsoctcp; UID = userid; Password = password;";
IfxConnection conn = new IfxConnection();
conn.ConnectionString = ConnectionString;
conn.ClientLocale = "en_US.UTF8";
conn.DatabaseLocale = "en_US.UTF8";
try
{
conn.Open();
}
catch (IfxException ex)
{
Console.WriteLine(ex.ToString());
}
Console.ReadLine();
}
因此,使用我们在步骤1 中获得的值,手动为连接对象分配client and database locale
值可以解决此问题。