Heidisql: لا تقوم Heidi SQL بتحديث السجلات بشكل صحيح باستخدام حقل به نوع بيانات بت

تم إنشاؤها على ١٥ مايو ٢٠١٨  ·  5تعليقات  ·  مصدر: HeidiSQL/HeidiSQL

خطوات إعادة إنتاج هذه المشكلة

  1. الخطوة 1؛ إنشاء جدول بسيط مع "ID" (int) ؛ "نص (varchar50)" ؛ "نوع بت" (بت)
  2. الخطوة 2؛ املأ الجدول بسجلين حسب أنواع البيانات الخاصة بهم.
  3. الخطوة ن ؛ قم بتحديث النص بنص آخر واضغط على الزر "نشر"
  4. ثم أحصل على ... الخطأ "خطأ SQL (102): بناء جملة غير صحيح بالقرب من '0'

السلوك الحالي

المشكلة هي أن SQL الذي تم إنشاؤه لا يتوافق مع معايير SQL لذلك يظهر الخطأ.
عينة
تحديث TOP (1) "Checkmarx". "dbo". "جدول اختبار البت"
تعيين "text" = 'test5'
أين "المعرف" = 4
AND "text" = 'test4'
AND "نوع bity" = b'0 '؛
/ * خطأ SQL (102): بناء جملة غير صحيح بالقرب من '0'. * /
السبب هو أن "نوع bity" = b'0 "غير صحيح. لا ينبغي أن يكون "ب" هناك!

سلوك متوقع

تحديث TOP (1) "Checkmarx". "dbo". "جدول اختبار البت"
تعيين "text" = 'test5'
أين "المعرف" = 4
AND "text" = 'test4'
AND "نوع bity" = '0' ؛
هذه هي الصيغة المصححة يدويًا بدون الحرف "b". يمكن تشغيل هذا بشكل طبيعي في خيار "الاستعلام" ويتم تحديث النص بشكل صحيح إلى "اختبار 5"

حل ممكن

قم بتغيير الأداة بحيث تقوم بإنشاء بناء جملة SQL الصحيح لخادم Microsoft SQL حتى يختفي هذا الخطأ. قد أنظر في الكود لاحقًا لتقديم مزيد من التفاصيل إذا لزم الأمر.

بيئة

  • إصدار HeidiSQL:

    الإصدار 9.5.0.5278 أحدث تم بناؤه

  • نظام ونسخة قاعدة البيانات:

    لست متأكدًا ولكن يبدو أن بناء الجملة قد يكون مناسبًا لقاعدة بيانات أخرى غير Microsoft SQL لذلك من المناسب ذكر قاعدة البيانات.

أحدث ما تم إنشاؤه من خادم MSSQL 2012 الذي تم إنشاؤه 11.0.7469.6

  • نظام التشغيل:

غير ذات صلة

التعليق الأكثر فائدة

أهلا،
لقد نظرت في الكود ويبدو أن المشكلة في الملف dbconnections.pas ، هناك 3 أسطر حيث يتم استخدام "b". يبدو أنه في السطر 7290 خاص بـ MYSQL ، يبدو أن الوظيفة العامة تقع في السطر 6628. على الأرجح أن المشكلة موجودة. لا يجب إضافة "b" في حالة MSSQL. هذه توصيتي. لا يمكنني اختبار ذلك لأنني لا أملك البيئة اللازمة لإنشاء إصدار جديد. آمل أن يساعد هذا!

ال 5 كومينتر

أهلا،
لقد نظرت في الكود ويبدو أن المشكلة في الملف dbconnections.pas ، هناك 3 أسطر حيث يتم استخدام "b". يبدو أنه في السطر 7290 خاص بـ MYSQL ، يبدو أن الوظيفة العامة تقع في السطر 6628. على الأرجح أن المشكلة موجودة. لا يجب إضافة "b" في حالة MSSQL. هذه توصيتي. لا يمكنني اختبار ذلك لأنني لا أملك البيئة اللازمة لإنشاء إصدار جديد. آمل أن يساعد هذا!

لدي أيضًا هذه المشكلة ، فهي تحدث دائمًا عند تحرير حقل في جدول MSSQL لا يحتوي على مفتاح أساسي.

لدي نفس المشكلة على MSSQL ، لكن لدي مفتاح أساسي.
عندما أقوم بتغيير اسم المستخدم ، تتغير جميع حقول البت إلى "T ، rue" أو "F ، أيضًا"
ولكن عندما أقوم بالتحديث ، أصبح من 1 و 0.

إنشاء جدول "UsersFile" (
"معرف المستخدم" INT NOT NULL ،
"UserActive" بت NULL DEFAULT NULL ،
"userrealname" VARCHAR (100) NULL DEFAULT NULL ،
"اسم المستخدم" VARCHAR (15) ليس فارغًا ،
"كلمة المرور" VARCHAR (32) NULL DEFAULT NULL ،
"ViewRight" BIT NULL DEFAULT NULL ،
"AddRight" BIT NULL DEFAULT NULL ،
"تحرير لليمين" BIT NULL DEFAULT NULL ،
"DeleteRight" BIT NULL DEFAULT NULL ،
"UserActivityRight" بت NULL DEFAULT NULL ،
"ManagmentRight" BIT NULL DEFAULT NULL ،
PRIMARY KEY ("اسم المستخدم") ،
UNIQUE INDEX "UNIQUE" ("UserId")
)
؛

لا تزال هذه مشكلة في إصدار HeidiSQL 11.0.0.6049 (64 بت) مع MSSQL 13.0 (SQL Server 2016).

وفقًا للوثائق ، يجب أن تكون الأرقام المجردة 0 و 1 كافية:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/constants-transact-sql؟view=sql-server-2016#bit -constants

بدلاً من ذلك ، يتم تغليفها أحيانًا بين قوسين ، كما هو الحال في (0) و (1) .

تضمين التغريدة 🙂

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات