Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 |