Memecahkan masalah mssql-python

Gunakan artikel ini untuk menemukan panduan pemecahan masalah untuk mssql-python pengemudi. Mulailah dengan gejala atau pesan kesalahan yang sesuai dengan masalah Anda.

Masalah penginstalan

pip gagal diinstal atau dikompilasi dari kode sumber

Untuk versi Python yang tidak didukung, roda yang hilang, lingkungan virtual yang tidak aktif, dan pustaka Linux yang hilang, lihat Pemecahan masalah instalasi dan koneksi.

Penginstalan driver yang bertentangan

Untuk kesalahan impor atau perilaku tak terduga saat mssql-python dan pyodbc diinstal bersamaan, lihat Pemecahan masalah instalasi dan koneksi.

Masalah koneksi

Tidak dapat terhubung ke server

Untuk SQLSTATE08001, server yang tidak dapat dijangkau, layanan yang dihentikan, dan aturan firewall Azure SQL, lihat Pemecahan masalah instalasi dan koneksi.

Gagal masuk

Untuk SQLSTATE 28000, ketidakcocokan mode autentikasi, kredensial tidak valid, dan pengguna database yang hilang, lihat Troubleshoot installation and connection issues.

Waktu koneksi habis

Untuk SQLSTATE HYT00 atau HYT01, latensi jaringan, server yang lambat, dan pengaturan batas waktu koneksi, lihat Memecahkan masalah penginstalan dan koneksi.

Kesalahan sertifikat SSL

Untuk kesalahan sertifikat yang tidak tepercaya dan opsi pengembangan lokal yang aman, lihat Pemecahan masalah instalasi dan koneksi.

Masalah eksekusi kueri

Tabel atau objek tidak ditemukan

Untuk SQLSTATE 42S02, konteks basis data, kualifikasi skema, dan pemeriksaan keberadaan tabel, lihat Pemecahan masalah kueri, data, dan operasi.

Kesalahan sintaks

Untuk SQLSTATE 42000, sintaks SQL, karakter escape dalam string, dan kueri berparameter, lihat Memecahkan masalah kueri, data, dan operasi.

Kesalahan parameter

Untuk SQLSTATE 07001, jumlah placeholder, dan gaya parameter yang didukung, lihat Pemecahan masalah kueri, data, dan operasi.

Masalah jenis data

Kesalahan konversi tanggal dan waktu

Untuk konversi parameter SQLSTATE 22007 dan datetime, lihat Pengerjakan masalah kueri, data, dan operasi.

Masalah presisi desimal

Untuk nilai desimal yang terpotong atau dibulatkan, lihat Mengatasi masalah kueri, data, dan operasi.

Masalah pengkodean Unicode

Untuk karakter khusus yang kacau dan tipe kolom Unicode, lihat Memecahkan masalah kueri, data, dan operasi.

Masalah performa

Eksekusi kueri yang lambat

Untuk pengindeksan, kumpulan hasil yang besar, dan pengumpulan koneksi, lihat Memecahkan masalah kueri, data, dan operasi.

Masalah memori dengan hasil yang besar

Untuk streaming dan membagi halaman kumpulan hasil yang besar, lihat Memecahkan masalah kueri, data, dan operasi.

Masalah transaksi

Ruang lingkup tabel temporer dengan autocommit

Untuk tabel sementara yang hilang setelah rollback dan pernyataan DDL yang memerlukan autocommit, lihat Troubleshoot query, data, and operation issues.

Transaksi tidak dilakukan

Untuk perubahan data yang tidak bertahan setelah koneksi ditutup, lihat Memecahkan masalah kueri, data, dan operasi.

Kesalahan deadlock

Untuk SQLSTATE40001, panduan retry, dan analisis deadlock berulang, lihat Memecahkan masalah kueri, data, dan operasi.

Masalah pemuatan massal

Pelanggaran batasan selama salinan massal

Untuk pelanggaran kunci primer, unik, cek, atau kunci asing selama salinan massal, lihat Pemecahan masalah kueri, data, dan operasi.

Kesalahan pemetaan kolom

Untuk ketidakcocokan jumlah kolom salinan massal dan urutan kolom, lihat Memecahkan masalah kueri, data, dan operasi.

Ketidakcocokan tipe data selama bulk copy

Untuk nilai yang terpotong, dibulatkan, atau salah setelah menyalin secara massal, lihat Memecahkan masalah kueri, data, dan operasi.

Kegagalan pengikatan tipe NumPy

Untuk kegagalan pengikatan parameter dengan tipe bilangan bulat atau float NumPy, lihat Memecahkan masalah kueri, data, dan operasi.

Salin massal dengan tabel sementara

Untuk kesalahan Invalid object name saat Anda menggunakan bulkcopy() dengan tabel sementara sesi, lihat Memecahkan masalah kueri, data, dan operasi.

Masalah kontainer dan CI

Pustaka sistem yang hilang di Linux

Untuk pustaka libltdl atau Kerberos yang tidak ada di lingkungan Linux, lihat Pemecahan masalah instalasi dan koneksi.

Kesalahan SSL macOS setelah penginstalan

Untuk error terkait SSL di macOS, termasuk Apple silicon, lihat Memecahkan masalah penginstalan dan koneksi.

Alat diagnostik

Aktifkan pencatatan log driver

Gunakan mssql_python.setup_logging() untuk mengaktifkan pencatatan log DEBUG. Driver mencatat pernyataan SQL, parameter, operasi internal ODBC, dan perubahan status koneksi.

import mssql_python

# Enable logging to file (default)
mssql_python.setup_logging()

# Output to stdout (useful for CI/CD and containers)
mssql_python.setup_logging(output="stdout")

# Output to both file and stdout
mssql_python.setup_logging(output="both")

# Custom log file path (must use .txt, .log, or .csv extension)
mssql_python.setup_logging(log_file_path="/var/log/myapp/mssql.log")

Berkas log menggunakan format CSV dan dirotasi secara otomatis saat mencapai 512 MB dengan lima berkas cadangan. Driver membersihkan data sensitif seperti kata sandi dan token akses dalam output log.

Untuk menambahkan entri aplikasi ke log driver, gunakan driver_logger:

import mssql_python
from mssql_python.logging import driver_logger

mssql_python.setup_logging()

driver_logger.debug("[App] Starting data processing")
driver_logger.error("[App] Failed to process record")

Caution

Pencatatan log menimbulkan overhead pada kinerja. Aktifkan hanya saat Anda memecahkan masalah. Jangan aktifkan secara bawaan pada lingkungan produksi.

Dapatkan informasi pengemudi

Ambil versi driver dan detail server dari koneksi aktif:

import mssql_python

conn = mssql_python.connect(connection_string)

print(f"Version: {mssql_python.__version__}")
print(f"Server name: {conn.getinfo(mssql_python.SQL_SERVER_NAME)}")
print(f"Database name: {conn.getinfo(mssql_python.SQL_DATABASE_NAME)}")

Periksa status koneksi

Jalankan kueri ringan untuk menguji apakah koneksi masih terbuka:

import mssql_python

try:
    cursor = conn.cursor()
    cursor.execute("SELECT 1")
    print("Connection is open")
except mssql_python.Error:
    print("Connection is closed or broken")

Referensi cepat: Kesalahan umum

Kesalahan SQLSTATE Penyebab umum Troubleshooting
Klien tidak dapat membuat koneksi 08001 Server tidak dapat dijangkau Tidak dapat terhubung ke server
Gagal masuk 28000 Kredensial tidak benar Login gagal
Waktu tunggu habis HYT00 atau HYT01 Jaringan lambat Waktu sambungan habis
Nama objek tidak valid 42S02 Tabel atau skema yang salah Tabel atau objek tidak ditemukan
Kesalahan sintaks 42000 Kesalahan SQL Kesalahan sintaks
Pelanggaran batasan 23000 Pelanggaran terhadap kunci asing atau kunci utama Pelanggaran batasan selama salin massal
Kebuntuan 40001 Mengunci ketidaksesuaian Kesalahan deadlock