เพิ่มอัตโนมัติใน phpmyadmin


103

ฉันมีฐานข้อมูลที่ใช้ PHP, MySQL และ phpMyAdmin

เมื่อผู้ใช้เป็นสมาชิกบนเว็บไซต์ของฉันฉันต้องการให้ระบบสร้างหมายเลขสมาชิกเฉพาะสำหรับพวกเขาโดยใช้ตัวเลขห้าหลัก สำหรับเช่น 83773 ฉันคิดว่ามันเหมือนกับการสร้างรหัสผ่านแบบสุ่มยกเว้นฉันต้องการตัวเลขสำหรับสมาชิกของฉันเท่านั้น หมายเลขประจำตัวนี้ต้องไม่ซ้ำกันสำหรับสมาชิกแต่ละคน

เป็นไปได้ไหมที่ฉันจะตั้งค่าคีย์หลักเป็น auto_increment ในตารางผู้ใช้ของฉันและตั้งค่าให้เริ่มต้นที่ 10,000 จากนั้นเพิ่มขึ้นอัตโนมัติทุกครั้งที่สมาชิกลงทะเบียน

นอกจากนี้ยังมีจำนวนสูงสุดที่หมายเลขรหัสคีย์หลักจะสูงถึงหรือไม่?

นี่เป็นวิธีที่เชื่อถือได้และปลอดภัยในการใช้หมายเลขรหัสคีย์หลักเป็นหมายเลขสมาชิกหรือไม่?


3
บางคนด้านล่างตอบว่าไม่มีขีด จำกัด สูงสุดสำหรับคีย์หลัก แต่ฉันคิดว่าขีด จำกัด บนคือขนาดสูงสุดของประเภทข้อมูลที่คุณเลือก ... บางทีฉันอาจจะผิด แต่จะไม่เป็น int จำกัด ค่าสูงสุดที่ 4294967295 แล้ว? dev.mysql.com/doc/refman/5.0/en/numeric-types.html
แซม

โปรดรับคำตอบที่ยอมรับ ฉันคิดว่านี่คือหนึ่งstackoverflow.com/a/18942684/248616
Nam G VU

คำตอบ:


214

มีขั้นตอนที่เป็นไปได้ในการเปิดใช้งานการเพิ่มอัตโนมัติสำหรับคอลัมน์ ฉันเดาว่าเวอร์ชัน phpMyAdmin คือ 3.5.5 แต่ไม่แน่ใจ

คลิกที่ตาราง > โครงสร้าง > แท็บภายใต้การดำเนินการ คลิกประถม (ตั้งค่าเป็นหลัก) คลิกที่เปลี่ยนบนหน้าต่าง pop-up เลื่อนไปทางซ้ายและตรวจสอบÄ_i ตรวจสอบให้แน่ใจว่าคุณได้เลือกไม่มีสำหรับค่าเริ่มต้นป้อนคำอธิบายภาพที่นี่


5
เนื่องจากคุณลักษณะ auto-inc ถูกลบออกจากแท็บการทำงานดูเหมือนว่าจะใช้งานได้ทันที ขอบคุณ @AmitKB
Mike S.

2
อย่างไรก็ตามเมื่อฉันลองแล้วฉันได้รับข้อผิดพลาดนี้: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Yaakov Ainspan

ข้อความนี้ชัดเจนคุณอาจพยายามมีคอลัมน์อัตโนมัติมากกว่าหนึ่งคอลัมน์
Amit Bhagat

1
มีปัญหาที่คล้ายกันและสิ่งนี้ได้รับการแก้ไขปัญหาของฉัน
Callat

1
ว้าวง่ายมาก ทำไมไม่มีใครพูดถึงเรื่องนี้ ฉันใช้เวลานานมากในการหาคำตอบเช่นนี้ คำตอบที่ดีที่สุด
oldboy

53

ใน phpMyAdmin ไปที่ตารางที่มีปัญหาแล้วคลิกแท็บ "Operations" ทางด้านซ้ายภายใต้ตัวเลือกตารางคุณจะได้รับอนุญาตให้ตั้งค่า AUTO_INCREMENT ปัจจุบัน


5
เมื่อฉันทำสิ่งนี้เพียงสองตัวเลือกเกี่ยวกับการเพิ่ม auto_increment คือ "ย้ายตารางไปที่" หรือ "คัดลอกตารางไปที่" ฉันไม่ต้องการย้ายหรือคัดลอกตาราง แต่เพียงแค่เพิ่ม auto_increment เกิดอะไรขึ้น?? ฉันใช้ MySQL v5.6
oldboy

@oldboy ฉันก็เป็นเหมือนกันกับคุณ บางทีพวกเขาอาจลบคุณลักษณะนี้ใน XAMPP PhpMyAdmin เวอร์ชันใหม่กว่า
kevind

21

เพียงเรียกใช้แบบสอบถาม MySQL ง่ายๆและตั้งค่าหมายเลขเพิ่มอัตโนมัติตามที่คุณต้องการ

ALTER TABLE `table_name` AUTO_INCREMENT=10000

ในแง่ของจำนวนสูงสุดเท่าที่ฉันทราบไม่มีเลยและไม่มีวิธีใดที่จะ จำกัด จำนวนดังกล่าว

ปลอดภัยอย่างสมบูรณ์แบบและแนวทางปฏิบัติทั่วไปในการตั้งค่าหมายเลขประจำตัวเป็นคีย์หลักโดยเพิ่ม int อัตโนมัติ มีทางเลือกอื่นเช่นการใช้ PHP เพื่อสร้างหมายเลขสมาชิกสำหรับคุณในรูปแบบเฉพาะจากนั้นตรวจสอบว่าไม่มีหมายเลขอยู่ก่อนที่จะแทรกอย่างไรก็ตามสำหรับฉันโดยส่วนตัวฉันจะใช้ค่า id auto_inc หลัก


10
  1. ในแท็บ "โครงสร้าง" ของตารางของคุณ
  2. คลิกที่ดินสอของตัวแปรที่คุณต้องการ auto_increment
  3. ภายใต้แท็บ "พิเศษ" เลือก "auto_increment"
  4. จากนั้นไปที่แท็บ "การดำเนินการ" ของตารางของคุณ
  5. ใต้ "ตัวเลือกตาราง" -> ประเภทการเพิ่มอัตโนมัติ -> 10,000

2

ใน phpMyAdmin หากคุณตั้งค่าฟิลด์ในตารางให้เพิ่มขึ้นอัตโนมัติจากนั้นแทรกแถวและตั้งค่าของฟิลด์นั้นเป็น 10,000 ฟิลด์นั้นจะดำเนินการต่อจากที่นั่น


2

@AmitKB ขั้นตอนของคุณถูกต้อง แม้ว่าข้อผิดพลาดนี้

ข้อผิดพลาดในการค้นหา: # 1075 - การกำหนดตารางไม่ถูกต้อง สามารถมีคอลัมน์อัตโนมัติได้เพียงคอลัมน์เดียวและต้องกำหนดเป็นคีย์

สามารถแก้ไขได้โดยการทำเครื่องหมายฟิลด์เป็นคีย์ก่อน (โดยใช้ไอคอนคีย์ที่มีป้ายกำกับหลัก) เว้นแต่คุณจะมีคีย์อื่นอาจใช้ไม่ได้


นานมากแล้วที่ฉันเล่นกับ phpMyAdmin ฉันลืมวิธีการทำเช่นนี้ ขอขอบคุณสำหรับการแก้ไขปัญหารองนี้ มันได้ผลสำหรับฉัน
rncrtr

0

คุณไม่สามารถกำหนดค่าสูงสุดได้ (นอกเหนือจากการเลือกประเภทข้อมูลที่ไม่สามารถเก็บตัวเลขจำนวนมากได้ แต่ไม่มีข้อ จำกัด ที่คุณต้องการ) คุณสามารถตรวจสอบได้ด้วย LAST_INSERT_ID () หลังจากใส่เพื่อรับ id ของสมาชิกที่สร้างขึ้นใหม่และหากมีขนาดใหญ่เกินไปในรหัสแอปพลิเคชันของคุณ (เช่นลบและปฏิเสธสมาชิก)

ทำไมคุณถึงต้องการขีด จำกัด บน?


0

นี่คือสาเหตุที่wp_terms, wp_termmetaและwp_term_taxonomyตารางซึ่งมีทั้งหมด ID ของพวกเขาไม่ได้กำหนดให้AUTO_INCREMENT

ในการดำเนินการนี้ไปที่ phpmyadmin คลิกที่ฐานข้อมูลความกังวลwp_termsตารางคลิกที่แท็บโครงสร้างทางด้านขวาคุณจะเห็นแท็บชื่อA_I(AUTO_INCREMENT)ตรวจสอบและบันทึก (คุณกำลังทำสิ่งนี้สำหรับตัวเลือกแรกเท่านั้นในกรณีที่wp_termคุณเป็น ทำเพื่อterm_id)

ทำเช่นเดียวกันwp_termmetaและwp_term_taxonomyจะช่วยแก้ปัญหาได้


ดูเหมือนว่าคุณคิดว่า OP ใช้ WordPress คุณหาข้อมูลนั้นมาจากไหน? ฉันไม่พบการอ้างอิงถึง WP ในคำถาม
Raul

0

(a) เพียงคลิกที่ฐานข้อมูลของคุณเลือกตารางของคุณ คลิกที่ 'ปฏิบัติการ' ในส่วน "ตัวเลือกตาราง" ให้เปลี่ยนค่า AUTO_INCREMENT เป็นค่าที่คุณต้องการในกรณีนี้: 10,000 คลิก "ไป" (ดูภาพที่แนบมา)

(b) หรือคุณสามารถเรียกใช้คำสั่ง SQL ใต้แท็บ SQL หลังจากเลือกตารางของคุณ เพียงพิมพ์ 'ALTER TABLE table_name AUTO_INCREMENT = 10000;' จากนั้นคลิก "ไป" แค่นั้นแหละ!! การตั้งค่าภาพค่าการฝังอัตโนมัติ (a)

การตั้งค่ารูปภาพค่าติดตั้งอัตโนมัติ (B)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.