Phpmyadmin'de otomatik artış


99

PHP, MySQL ve phpMyAdmin kullanan mevcut bir veritabanım var.

Kullanıcılar web siteme üye olduklarında, sistemin beş haneli bir numara kullanarak onlar için benzersiz bir üyelik numarası oluşturmasına ihtiyacım var. örneğin 83773 için. Sanırım rastgele bir parola üretmeye benziyor ama sadece üyelerim için sayı istiyorum. Bu kimlik numarası her üye için benzersiz olmalıdır.

Kullanıcı tablomda birincil anahtarı auto_increment olarak ayarlayıp 10000'de başlayacak ve bir üye her kaydolduğunda otomatik artış olacak şekilde ayarlamam mümkün olabilir mi?

Ayrıca, birincil anahtar kimlik numarasının çıkabileceği maksimum bir sayı var mı?

Bu, birincil anahtar kimlik numarasını üyelik numarası olarak kullanmanın güvenilir ve güvenli bir yolu mu?


3
Aşağıdaki kişilerden bazıları birincil anahtarda üst sınır olmadığını söyledi, ancak üst sınırın seçtiğiniz veri türünün maksimum boyutu olduğunu varsayabilirim ... belki yanılıyorum, ama olmaz 4294967295 maksimum değerle sınırlı o zaman? dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Sam

Lütfen kabul edilen cevabı alın. Sanırım bu tek stackoverflow.com/a/18942684/248616
Nam G VU

Yanıtlar:


210

Bir sütun için otomatik artışı etkinleştirmek için olası adımlar vardır. PhpMyAdmin sürümünün 3.5.5 olduğunu tahmin ediyorum ama emin değil.

Tıklayın Tablo > Yapı sekmesi> Altında Eylem Birincil (primer olarak ayarlanır) tıkla tıklayın Değişim sola ilerleyin açılan pencerede üzerine ve check A_i . Ayrıca emin olmak seçtiğiniz Hiçbiri için Varsayılangörüntü açıklamasını buraya girin


5
Otomatik artırma özelliği İşlemler sekmesinden kaldırıldığından, şimdi nasıl uygulanacağı anlaşılıyor. Teşekkürler @AmitKB.
Mike S.

2
Ancak denediğimde şu hatayı aldım: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Yaakov Ainspan

Mesaj açık, birden fazla otomatik sütuna sahip olmaya çalışıyor olabilirsiniz.
Amit Bhagat

1
Benzer bir sorun vardı ve bu benim sorunumu çözdü
2017'yi

1
vay, çok basit. neden kimse bundan bahsetmedi? Böyle bir cevap bulmam çok uzun sürdü. açık ara en iyi cevap.
ihtiyar çocuk

53

PhpMyAdmin'de, söz konusu tabloya gidin ve "İşlemler" sekmesine tıklayın. Solda Tablo Seçenekleri altında, geçerli AUTO_INCREMENT değerini ayarlamanıza izin verilecektir.


5
bunu yaptığımda, auto_increment eklemeyle ilgili iki seçeneğim "tabloyu şuraya taşı" veya "tabloyu şuraya kopyala". Tabloyu taşımak ya da kopyalamak istemiyorum, sadece auto_increment ekleyin. ne oluyor?? MySQL v5.6 kullanıyorum.
ihtiyar çocuk

@oldboy seninle aynı şeyi alıyorum. Belki de XAMPP PhpMyAdmin'in daha yeni sürümlerindeki özelliği kaldırmışlardır
kevind

21

Basit bir MySQL sorgusu çalıştırın ve otomatik artış numarasını istediğiniz şeye ayarlayın.

ALTER TABLE `table_name` AUTO_INCREMENT=10000

Bir maksimum açısından, bildiğim kadarıyla bir tane yok ve bu sayıyı sınırlamanın herhangi bir yolu yok.

Tamamen güvenlidir ve bir kimlik numarasını bir birincil anahtar olarak ayarlamak, otomatik artan int. Sizin için belirli bir formatta üyelik numaraları oluşturmak için PHP'yi kullanmak ve daha sonra eklemeden önce numarayı kontrol etmek gibi alternatifler vardır, ancak benim için kişisel olarak birincil id auto_inc değerini kullanırdım.


10
  1. Tablonuzun "Yapı" sekmesinde
  2. Auto_increment istediğiniz değişkenin kalemine tıklayın
  3. "Ekstra" sekmesinin altında "otomatik artırma" yı seçin
  4. ardından tablonuzun "İşlemler" sekmesine gidin
  5. "Tablo seçenekleri" altında -> auto_increment türü -> 10000

2

PhpMyAdmin'de, tablonuzda otomatik artış için bir alan ayarlarsanız ve ardından bir satır eklerseniz ve bu alanın değerini 10000 olarak ayarlarsanız, oradan devam edecektir.


2

@AmitKB, Prosedürünüz doğru. Bu hataya rağmen

Sorgu hatası: # 1075 - Yanlış tablo tanımı; yalnızca bir otomatik sütun olabilir ve anahtar olarak tanımlanmalıdır

ilk olarak alanı anahtar olarak işaretleyerek (birincil etiketli anahtar simgesini kullanarak) çözülebilir, başka bir anahtarınız yoksa çalışmayabilir.


PhpMyAdmin ile oynayalı çok uzun zaman oldu Bunu nasıl yapacağımı unuttum. Bu ikincil soruna yaptığınız düzeltme için teşekkür ederiz. Benim için çalıştı.
rncrtr

0

Maksimum bir değer ayarlayamazsınız (büyük sayıları tutamayan bir veri türü seçmek dışında, ancak istediğiniz sınıra sahip olmayanlar yoktur). Yeni oluşturulan üyenin kimliğini almak için ekledikten sonra bunu LAST_INSERT_ID () ile kontrol edebilirsiniz ve çok büyükse uygulama kodunuzda işleyebilirsiniz (örneğin, üyeyi silin ve reddedin).

Neden bir üst limit istiyorsun?


0

Bunun nedeni wp_terms, tüm kimliklerinin ayarlanmamış olduğu wp_termmetave wp_term_taxonomytablolarıdır.AUTO_INCREMENT

Bunu yapmak için phpmyadmin'e gidin, ilgili veri tabanına, wp_termstabloya tıklayın, sekme yapısına tıklayın, sağ tarafta isimli bir sekme göreceksiniz A_I(AUTO_INCREMENT), kontrol edin ve kaydedin (Bunu yalnızca ilk seçenek için yapıyorsunuz wp_term, sadece bunun için yapıyor term_id).

Aynı şeyi yapın wp_termmetave wp_term_taxonomybu sorunu çözecektir.


Görünüşe göre OP'nin WordPress kullandığını düşünüyorsunuz, bu bilgiyi nereden buldunuz? Soruda WP'ye herhangi bir referans bulamıyorum.
Raul Sauco

0

(a) Veritabanınıza tıklayın, tablonuzu seçin. 'İşlemler'e tıklayın. 'Tablo seçenekleri' bölümünün altında, AUTO_INCREMENT değerini istediğiniz değere değiştirin, bu durumda 10000 'Git'i tıklayın. (Ekteki resme bakın)

(b) Alternatif olarak, tablonuzu seçtikten sonra SQL sekmesi altında bir SQL komutu çalıştırabilirsiniz. 'ALTER TABLE table_name AUTO_INCREMENT = 10000;' yazın. ardından 'Git'i tıklayın. Bu kadar!! OTOMATİK ARTIRMA DEĞERİNİN AYARLANMASI resim (a)

OTOMATİK ARTIRMA DEĞERİNİN AYARLANMASI resmi (B)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.