我程序中使用嵌入式mysql数据库,允许用户在运行时改变数据库路径。我的执行顺序是: 1 程序启动时 mysql_server_init(7, @argv, nil); //argv中含有默认数据库路径
参数,比如 '--datadir=D:\DataBase';
2 程序运行中每次需要使用数据库时都执行以下部分:
aHandle := mysql_init(nil);
db := mysql_real_connect(aHandle, nil, nil, nil, PAnsichar(dbname), 0, nil, 0)
//dbname 对应 D:\DataBase 下一个文件夹,即D:\DataBase\dbname中有数据库表;
……
mysql_Close(db); 以上没有问题。假如现在将数据库路径改为E:\DataBase,数据库名为123,已知E:\DataBase\123
中有数据库表。当我再次调用
mysql_server_init(7, @argv, nil); //--datadir=E:\DataBase'
并执行上面步骤2的代码后,发现其实还是对D:\DataBase\dbname 操作。
但是当我保存改动,重启程序后使用E:\DataBase\123正常。怎么回事呢?
该怎样写才能不用重启程序? 程序中没有使用mysql_server_end 。
参数,比如 '--datadir=D:\DataBase';
2 程序运行中每次需要使用数据库时都执行以下部分:
aHandle := mysql_init(nil);
db := mysql_real_connect(aHandle, nil, nil, nil, PAnsichar(dbname), 0, nil, 0)
//dbname 对应 D:\DataBase 下一个文件夹,即D:\DataBase\dbname中有数据库表;
……
mysql_Close(db); 以上没有问题。假如现在将数据库路径改为E:\DataBase,数据库名为123,已知E:\DataBase\123
中有数据库表。当我再次调用
mysql_server_init(7, @argv, nil); //--datadir=E:\DataBase'
并执行上面步骤2的代码后,发现其实还是对D:\DataBase\dbname 操作。
但是当我保存改动,重启程序后使用E:\DataBase\123正常。怎么回事呢?
该怎样写才能不用重启程序? 程序中没有使用mysql_server_end 。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货