مشکل با خطای Duplicate ' 0 '

Cussed

Member
سلام خسته نباشید دوستان

من یک کد دارم که وقتی میخواد insert کنه این Error را میدهد Duplicate'0' من 2 روش را برای این کار استفاده کردم و کار هم داد ولی مشکلات دیگری به وجود می آورد

1.من گزینه Auto Increment در Field مربوطه را فعال کردم ( ولی همه اطلاعاتم به هم ریخت )

2. از کد زیر استفاده کردم که guid آخر را پیدا میکرد و +1 میکرد ولی وقتی روی سایت قرار میدادم Browser در Loading باقی می ماند و فشار زیادی بر روی Memory سرور وارد می کرد

PHP:
                       $selectG  = mysql_query("SELECT `guid` FROM characters.item_instance ORDER BY `guid` DESC limit 0,1") or die(mysql_error());
                       $gRows = mysql_fetch_array($selectG);
                       $getLastID = ($gRows["guid"] + 1);
در اصل من میخوام بعد از insert یک Guid جدید در table وارد شود

ممنون میشم کمک کنید .
 
بسم الله الرحمن الرحیم
سلام
احتمالا اون فیلدتون یا primary key بود و یا unique (که البته باید هم اینطوری باشه)/ که اگه به index تغییر بدید این خطا رونمی ده

و اینکه وقتی فیلدی auto_increment هست دیگه دلیلی نداره شما به اون فیلد مقدار بدید / خودش +1 کرده و به فیلد اضافه میکنه / یعنی شما فیلدهای دیکه رو با مقدارهایی که باید باشن وارد کنید و این فیلدی که auto_increment هست رو کاری نداشته باشید و خودش اضافه می کنه
 

Cussed

Member
بسم الله الرحمن الرحیم
سلام
احتمالا اون فیلدتون یا primary key بود و یا unique (که البته باید هم اینطوری باشه)/ که اگه به index تغییر بدید این خطا رونمی ده

و اینکه وقتی فیلدی auto_increment هست دیگه دلیلی نداره شما به اون فیلد مقدار بدید / خودش +1 کرده و به فیلد اضافه میکنه / یعنی شما فیلدهای دیکه رو با مقدارهایی که باید باشن وارد کنید و این فیلدی که auto_increment هست رو کاری نداشته باشید و خودش اضافه می کنه

مشکل اینجاست که فیلد auto_incremen نیست
 
بسم الله الرحمن الرحیم
آهان من فکر کردم هست بعد غیرفعال کردید /
ممکنه توضیح بدید که بعد از فعال کردنش در فیلد مربوطه دقیقا چه مشکلی پیش اومد؟

یه مشکلی که به ذهنم می رسه اینه که مثلا 50 تا رکورد دارید و از 1 شروع شده تا 50
و در اینصورت بعد از اینکه auto_increment رو به فیلد اضافه کردید مقدارش رو هم باید 51 قرار بدید که برای رکورد های بعدی از 51 شروع بشه و نه از 1 که تداخل ایجاد نکنه
برای این عمل هم از این کوئری می تونی استفاده کنی:
PHP:
ALTER TABLE `TABLE NAME` AUTO_INCREMENT =51
بجای 51 در مد فوق هم عدد بعدی رو ( نسبت به رکوردتون ) وارد می کنید / بجای TABLE NAME هم نام جدولت رو بنویس
و یا اگه از phpmyadmin استفاده می کنی: ابتدا وارد جدولت شو و سپس به قسمت Operations برو و مقدار رو بده

اگه مشکلت با افزودن auto_increment این نیست لطفا توضیح بده که دقیقا چه هست که شاید راه حلی باشه
 

Cussed

Member
سلام کلاً من نمی توانم Auto_increment کنم تمام اطلاعات من به هم میخوره یک بار این کار رو کردم تمام اطلاعاتم متلاشی شد ، میخوام ببینم راهی هست بدون auto_increment کردن یک guid جدید ایجاد کرد یا خیر ، البته به جزء 2 روشی که خودم در پست اول امتحان کردم .

مرسی ، یا حق
 

H05531N

Member
کد:
   $max_sql=mysql_query("SELECT max(sort) as maxsort  FROM `".$table_prefix."sysnews_body`")or die(print mysql_error());
   $max_row = mysql_fetch_array($max_sql);
   $maxsort=$max_row["maxsort"]+1;
 

جدیدترین ارسال ها

بالا