Heidisql: Heidi SQL tidak memperbarui catatan dengan benar menggunakan bidang dengan tipe data bit

Dibuat pada 15 Mei 2018  ·  5Komentar  ·  Sumber: HeidiSQL/HeidiSQL

Langkah-langkah untuk mereproduksi masalah ini

  1. Langkah 1; Buat tabel sederhana dengan "ID" (int); "teks(varchar50)"; "tipe bit" (sedikit)
  2. Langkah 2; Isi tabel dengan 2 record sesuai tipe datanya.
  3. Langkah N; Perbarui teks dengan teks lain dan tekan tombol "posting"
  4. Lalu saya mendapatkan ... kesalahan "Kesalahan SQL (102): Sintaks salah di dekat '0'

Perilaku saat ini

masalahnya adalah SQL yang dihasilkan tidak sesuai dengan standar SQL sehingga muncul kesalahan.
Sampel
UPDATE TOP(1) "Checkmarx"."dbo"."tabel uji bit"
SET "teks" = 'test5'
MANA "ID" = 4
DAN "teks"='test4'
DAN "tipe bit"=b'0';
/* Kesalahan SQL (102): Sintaks salah di dekat '0'. */
alasannya adalah karena "tipe bit"=b'0' salah. "b" seharusnya tidak ada di sana!

Perilaku yang diharapkan

UPDATE TOP(1) "Checkmarx"."dbo"."tabel uji bit"
SET "teks" = 'test5'
MANA "ID" = 4
DAN "teks"='test4'
DAN "tipe bit"='0';
Ini adalah sintaks yang dikoreksi secara manual tanpa "b". ini dapat dijalankan secara normal di opsi "permintaan" dan teks diperbarui dengan benar ke 'test5'

Solusi yang mungkin

ubah alat sehingga membuat sintaks SQL yang benar untuk server Microsoft SQL sehingga kesalahan ini hilang. Saya mungkin akan melihat kode nanti untuk memberikan detail lebih lanjut jika diperlukan.

Lingkungan

  • Versi HeidiSQL:

    versi 9.5.0.5278 versi terbaru

  • Sistem dan versi basis data:

    Saya tidak yakin tetapi sepertinya sintaksnya mungkin tepat untuk Database lain selain Microsoft SQL oleh karena itu relevan untuk menyebutkan DB.

terbaru dibangun dari server MSSQL 2012 dibangun 11.0.7469.6

  • Sistem operasi:

tidak berhubungan

Komentar yang paling membantu

Hai,
Saya melihat ke dalam kode tampaknya masalah di file dbconnections.pas , ada 3 baris di mana 'b' digunakan. tampaknya pada baris 7290 adalah khusus MYSQL, fungsi generik tampaknya berada pada baris 6628. kemungkinan besar masalahnya ada di sana. 'b' tidak boleh ditambahkan dalam kasus MSSQL. ini adalah rekomendasi saya. Saya tidak dapat menguji karena saya tidak memiliki lingkungan untuk membangun versi baru. Semoga membantu!

Semua 5 komentar

Hai,
Saya melihat ke dalam kode tampaknya masalah di file dbconnections.pas , ada 3 baris di mana 'b' digunakan. tampaknya pada baris 7290 adalah khusus MYSQL, fungsi generik tampaknya berada pada baris 6628. kemungkinan besar masalahnya ada di sana. 'b' tidak boleh ditambahkan dalam kasus MSSQL. ini adalah rekomendasi saya. Saya tidak dapat menguji karena saya tidak memiliki lingkungan untuk membangun versi baru. Semoga membantu!

Saya juga memiliki masalah ini, selalu terjadi ketika mengedit bidang dalam tabel MSSQL yang tidak memiliki Kunci Utama.

Saya memiliki masalah yang sama pada MSSQL, tetapi saya memiliki kunci utama.
Ketika saya mengubah UserName, semua bidang bit berubah menjadi "T,rue" atau "F,alse"
Tetapi ketika saya menyegarkan saya menjadi 1 dan 0.

BUAT TABEL "UsersFile" (
"UserId" INT BUKAN NULL,
"UserActive" BIT NULL DEFAULT NULL,
"nama asli" VARCHAR(100) NULL DEFAULT NULL,
"Nama Pengguna" VARCHAR(15) BUKAN NULL,
"Kata Sandi" VARCHAR(32) NULL DEFAULT NULL,
"ViewRight" BIT NULL DEFAULT NULL,
"AddRight" BIT NULL DEFAULT NULL,
"EditRight" BIT NULL DEFAULT NULL,
"Hapus Kanan" BIT NULL DEFAULT NULL,
"UserActivityRight" BIT NULL DEFAULT NULL,
"ManagementRight" BIT NULL DEFAULT NULL,
KUNCI UTAMA ("Nama Pengguna"),
INDEKS UNIK "UNIK" ("UserId")
)
;

Ini masih menjadi masalah di HeidiSQL Versi 11.0.0.6049 (64 Bit) dengan MSSQL 13.0 (SQL Server 2016).

Per dokumentasi, angka kosong 0 dan 1 sudah cukup:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/constants-transact-sql?view=sql-server-2016#bit -constants

Atau, mereka terkadang dibungkus dalam tanda kurung, seperti pada (0) dan (1) .

@ansgarbecker up? 🙂.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat