"Enter"a basıp içeriğe geçin

Powershell MySQL Bağlantısında “Fatal error encountered during command execution” Hatası ve Çözümü

Powershell’de MySQL bağlantısıyla bir ETL işlemi yaparken nispeten uzun süren bir aktarım sırasında

Exception calling "ExecuteNonQuery" with "0" argument(s): "Fatal error encountered during command execution."

şeklinde bir hata aldım. Biraz araştırmadan sonra çeşitli çözümleri denedim ancak makul bir sonuca ulaşamadım.

Sorgu uzun sürdüğü için hatanın Powershell’in, MySQL bağlantısı yaparken uyguladığı varsayılan zaman aşımı süresi ile ilgili olabileceğini düşünerek biraz araştırma yaptım. Şurada connection string içine varsayılan zaman aşımı süresi için “default command timeout” parametresinin eklenebileceğini gördüm ve bunu uygulayarak sorunu çözdüm. Çözüm şöyle:

$conn_string = "server=localhost;user id=user;password=pass;database=db;default command timeout=1800;Pooling=false;SslMode=none;" # 1800 saniye

Bu problemi aynı zamanda Powershell içinde MySqlCommand nesnesinin CommandTimeout özelliğine zaman aşımı süresi vererek de çözebilirsiniz.

$select_conn = New-Object MySql.Data.MySqlClient.MySqlConnection($conn_string)
$cmd = New-Object MySql.Data.MySqlClient.MySqlCommand
$cmd.Connection = $conn
$cmd.CommandTimeout = 1800 # saniye

Söz konusu süreyi işlediğiniz verinin büyüklüğüne göre artırabilirsiniz.

Şu notu eklemekte fayda var. Powershell bu hata ile ilgili detaylı bilgi vermiyor. Hata, parametrik komut gönderirken unutulan ya da yanlış yazılan bir parametreden de kaynaklanıyor olabilir. Burada iş programcının becerisi ve tecrübesine kalıyor maalesef.

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir