每当我对数据库进行更新(存储过程中的更改、表中的更改、新表等),我都会创建一个新的sql文件,并通过teamviewer在客户机上运行。
我希望我的应用程序更新自己的数据库。所以我决定让它通过ftp下载sql文件,然后使用executenonquery之类的工具进行自我更新。
不幸的是,我被分隔符推送错误所困扰。如果删除分隔符,则无法运行存储过程更新查询(或者我遗漏了什么?)。
以下是我通常运行的sql文件的示例内容:
USE 'iceberg';
DROP procedure IF EXISTS 'get_unpaidandduetickets';
DELIMITER $$
USE 'iceberg'$$
CREATE DEFINER='root'@'localhost' PROCEDURE 'get_unpaidandduetickets'()
BEGIN
SELECT
(SELECT IFNULL(COUNT(ticketid),0) FROM tickets WHERE balance > 0 AND status = 1) AS unpaidtickets
,(SELECT IFNULL(COUNT(ticketid),0) FROM tickets WHERE balance > 0 AND status = 1 AND DATE(duedate) = DATE(NOW())) AS dueticketstoday
,(SELECT IFNULL(COUNT(ticketid),0) FROM tickets WHERE balance > 0 AND status = 1 AND DATE(duedate) < DATE(NOW())) AS pastduetickets;
END$$
DELIMITER ;
CALL set_databaseversion('001020181119');
有什么办法让我成功吗?我对其他方法持开放态度。
提前谢谢!
1条答案
按热度按时间kadbb4591#
假设您有包含数据库名称的连接字符串,则无需追加
USE 'iceberg';
以及DELIMITER $$
在剧本里因为MySqlScript
示例可以为您控制分隔符。因此,请按照下面的示例调整脚本内容:然后,使用
ReadAllText()
以字符串形式读取整个文件内容并将其传递到Query
内部财产MySqlScript
示例:注意:您可以创建自定义扩展方法来删除不必要的部分,例如
DELIMITER
以及USE
关键词。引用:在mysqlscript中使用分隔符