المشكلة هي أن 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. هذه توصيتي. لا يمكنني اختبار ذلك لأنني لا أملك البيئة اللازمة لإنشاء إصدار جديد. آمل أن يساعد هذا!
لدي أيضًا هذه المشكلة ، فهي تحدث دائمًا عند تحرير حقل في جدول 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)
.
تضمين التغريدة 🙂
التعليق الأكثر فائدة
أهلا،
لقد نظرت في الكود ويبدو أن المشكلة في الملف dbconnections.pas ، هناك 3 أسطر حيث يتم استخدام "b". يبدو أنه في السطر 7290 خاص بـ MYSQL ، يبدو أن الوظيفة العامة تقع في السطر 6628. على الأرجح أن المشكلة موجودة. لا يجب إضافة "b" في حالة MSSQL. هذه توصيتي. لا يمكنني اختبار ذلك لأنني لا أملك البيئة اللازمة لإنشاء إصدار جديد. آمل أن يساعد هذا!