PDA

View Full Version : string or binary data would be truncated



mbasirati
دوشنبه 10 فروردین 1394, 10:07 صبح
سلام
من یه جدول دارم توی دیتابیسم که جدیدا یه فیلد از نوع عددی به اون اضافه کردم.
من این جدول رو توی اس کیو ال سرور باز کردم (Edit Top 200 Rows) و قصد داشتم مقدار فیلد جدید رو برای رکوردهام وارد کنم. تمام رکوردها به جز رکورد دوم وارد شد و مشکلی نداشت.
فقط به رکورد دوم توی این جدول خطا میده (در عنوان تاپیک نوشتم چه خطایی میده)
و جالب تر اینکه با استفاده از کوئری این رکورد رو آپدیت کردم و مقدار فیلد رو تغییر دادم و اعمال هم شد. ولی به صورت دستی بازم نمیتونم این فیلد رو (فقط برای رکورد دوم) تغییر بدم.
علتش چیه؟

آپدیت:
الان متوجه شدم که کلا هیچکدوم از فیلدهای این رکورد رو نمیتونم ویرایش کنم!

SabaSabouhi
دوشنبه 10 فروردین 1394, 12:57 عصر
سلام
من یه جدول دارم توی دیتابیسم که جدیدا یه فیلد از نوع عددی به اون اضافه کردم.
من این جدول رو توی اس کیو ال سرور باز کردم (Edit Top 200 Rows) و قصد داشتم مقدار فیلد جدید رو برای رکوردهام وارد کنم. تمام رکوردها به جز رکورد دوم وارد شد و مشکلی نداشت.
فقط به رکورد دوم توی این جدول خطا میده (در عنوان تاپیک نوشتم چه خطایی میده)
و جالب تر اینکه با استفاده از کوئری این رکورد رو آپدیت کردم و مقدار فیلد رو تغیی دادم و اعمال هم شد. ولی به صورت دستی بازم نمیتونم این فیلد رو (فقط برای رکورد دوم) تغییر بدم.
علتش چیه؟

آپدیت:
الان متوجه شدم که کلا هیچکدوم از فیلدهای این رکورد رو نمیتونم ویرایش کنم!

سلام
این خطا رو وقتی دریافت می‌کنی که داری اطلاعاتی با حجم بیش از گنجایش یک ستون وارد می‌کنی.
مثلاً یک ستون داری برای نام که به صورت (Name as varchar(50 تعریف شده و قصد داری متنی رو
بهش بدی که 51 کاراکتر هست.
دقیقاً مقداری رو که داری توی اون سطر به‌روز می‌کنی رو بررسی کن و مطمئن شود که مقادیر تمام
ستون‌ها دقیقاً تو فضای تخصیص شده برای اون ستون جا می‌گیره یا نه.

صبا صبوحی

mbasirati
دوشنبه 10 فروردین 1394, 17:52 عصر
تمامی فیلدهام رو بررسی کردم. هیچ کدوم چنین مشکلی که شما میگید نداشت و اگرم داشته باشه نباید دستور UPDATE از طریق tSQL هم جواب بده ولی میده!

SabaSabouhi
سه شنبه 11 فروردین 1394, 10:16 صبح
تمامی فیلدهام رو بررسی کردم. هیچ کدوم چنین مشکلی که شما میگید نداشت و اگرم داشته باشه نباید دستور UPDATE از طریق tSQL هم جواب بده ولی میده!

سلام
یه کم عجیب به نظر می‌رسه.
مطمئنی که تو برنامه دقیقاً همین query داره اجرا می‌شه؟
مطمئنی که روی این جدول Trigger نداری؟

این مورد رو هم بررسی کن:
ممکنه برنامه داره رشته‌ها رو به صورت unicode ارسال می‌کنه و شما تو جدولت رشته‌ها رو به صورت غیر unicode نگهداری کردی.
در این صورت طول رشته دو برابر می‌شه. مثلاً «سلام» در حالت غیر unicode فقط 4 کاراکتر هست، اما اگه unicode ارسال بشه می‌شه 8 کاراکتر

و در کل پیش‌نهاد می‌کنم تمام رشته‌هایی که ممکنه فارسی توشون استفاده بشه رو بجای varchar از nvarchar استفاده کنی.

صبا صبوحی

mbasirati
چهارشنبه 12 فروردین 1394, 08:19 صبح
مطمئنی که تو برنامه دقیقاً همین query داره اجرا می‌شه؟
بله


مطمئنی که روی این جدول Trigger نداری؟
بله


و در کل پیش‌نهاد می‌کنم تمام رشته‌هایی که ممکنه فارسی توشون استفاده بشه رو بجای varchar از nvarchar استفاده کنی.
این کارو هم کردم. اما بازم ارور سرجای خودشه. البته برای من مشکل ساز نیس این ارور، ولی میخوام بدونم علتش چیه. برا خودمم خیلی عجیبه!