PowerShell MySQL事务无法正常工作

问题描述 投票:1回答:1

我正在尝试使用PowerShell和MySQL来处理事务。我的代码基于https://michlstechblog.info/blog/powershell-some-examples-to-use-a-mysql-database/

[string]$sMySQLUserName = 'user';
[string]$sMySQLPW = 'passw0rd';
[string]$sMySQLDB = 'mydatabase';
[string]$sMySQLHost = localhost';
[string]$sConnectionString = "server="+$sMySQLHost+";port=3306;uid=" + $sMySQLUserName + ";pwd=" + $sMySQLPW + ";database="+$sMySQLDB;

$mySqlTempTableDefinition = 'create table some_temp_table (
    sku varchar(50) primary key,
    thing float null
)';

$oConnection = New-Object MySql.Data.MySqlClient.MySqlConnection($sConnectionString);
$oConnection.Open();

$oMYSQLTransaction=$oConnection.BeginTransaction();
$oMYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand;
$oMYSQLCommand.Connection=$oConnection;
$oMYSQLCommand.Transaction=$oMYSQLTransaction;
$oMYSQLCommand.CommandText = "SET autocommit = 0";
$iRows=$oMYSQLCommand.executeNonQuery();

$oMYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$oMYSQLCommand.Connection=$oConnection;
$oMYSQLCommand.CommandText = $mySqlTempTableDefinition;    
$oMYSQLCommand.Transaction=$oMYSQLTransaction;
$iRows=$oMYSQLCommand.executeNonQuery();

$oMySQLTransaction.Rollback();
$oMySqlCommand.Connection.Close();

第一次运行它时,表创建并保存在数据库中,这不是预期的结果,因为我从不提交事务。当然,这意味着后续运行失败,因为该表已经存在。我该如何正确实现?

mysql powershell
1个回答
0
投票

我试过它作为一个C#控制台应用程序,它也没有在那里工作。

事实证明MySQL在事务中不支持DDL:

Is it possible to roll back CREATE TABLE and ALTER TABLE statements in major SQL databases?

© www.soinside.com 2019 - 2024. All rights reserved.