カスタム アクション内でスクリプトを実行するのに問題があります。このスクリプトは、localhost MySQL サーバーにデータベースを作成してセットアップします。
具体的には、手順の 1 つに問題があります。
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `UpdateAutoInc`(IN `increment` BIGINT)
BEGIN
SET @s = concat('ALTER TABLE tblactionservices AUTO_INCREMENT ',increment);
PREPARE stmt FROM @s;
EXECUTE stmt;
SET @s = concat('ALTER TABLE tblbannedclient AUTO_INCREMENT ',increment);
PREPARE stmt FROM @s;
EXECUTE stmt;
END$$
DELIMITER ;
スクリプトでは、この手順の前に、完全に実行される 2 つの手順があります。
アプリケーションをインストールすると、「パラメーター '@s' を定義する必要があります」というエラーが表示されます。インターネットを探していると、このブログを見つけましたが、「Allow User Variables=True;」を追加しました。運がない。このテキストでは、スクリプトは最初の手順で直接クラッシュします。実際、何を見つけても (プロシージャ、テーブルなど)、常にクラッシュします。「SQL 構文にエラーがあります。マニュアルの bla bla を確認してください」というエラーはまったく役に立たないため、問題を見つけることができません。
これは、c# からスクリプトを実行するために使用しているクラスです。
private void ExecuteSql(string DatabaseName, string Sql)
{
MySqlConnection connection = new MySqlConnection { ConnectionString = "server=127.0.0.1;User Id=root" };
MySqlCommand command = new MySqlCommand(Sql, connection);
command.Connection.Close();
command.Connection.Open();
try
{
command.ExecuteNonQuery();
}
finally
{
// Closing the connection should be done in a Finally block
command.Connection.Close();
}
}
スクリプトは手動で入力されたものではなく、PhPMyAdmin から自動的に生成されたものです。MySQL サーバーのバージョンは 5.5 で、コネクタのバージョンは 6.5.5.0 です。