Tự động tăng trong phpmyadmin


94

Tôi có một cơ sở dữ liệu hiện có sử dụng PHP, MySQL và phpMyAdmin.

Khi người dùng trở thành thành viên trên trang web của tôi, tôi cần hệ thống tạo số thành viên duy nhất cho họ bằng số năm chữ số. ví dụ: 83773. Tôi đoán nó giống như tạo một mật khẩu ngẫu nhiên ngoại trừ việc tôi chỉ muốn số cho các thành viên của mình. Số ID này phải là duy nhất cho mỗi thành viên.

Tôi có thể đặt khóa chính thành auto_increment trong bảng người dùng của mình và đặt nó bắt đầu ở 10000 rồi tự động tăng lên mỗi khi thành viên đăng ký không?

Ngoài ra, có số lượng tối đa mà số ID khóa chính sẽ tăng lên không?

Đây có phải là cách đáng tin cậy và an toàn để sử dụng số ID khóa chính làm số thành viên không?


3
Một số người bên dưới đã trả lời rằng không có giới hạn trên cho khóa chính, nhưng tôi sẽ giả định rằng giới hạn trên là kích thước tối đa của kiểu dữ liệu bạn đã chọn ... có thể tôi sai, nhưng sẽ không sau đó giới hạn ở giá trị tối đa là 4294967295? dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Sam

Vui lòng chọn câu trả lời được chấp nhận. Tôi nghĩ rằng đây là một stackoverflow.com/a/18942684/248616
Nam G VU

Câu trả lời:


201

Có thể có các bước để bật tăng tự động cho một cột. Tôi đoán phiên bản phpMyAdmin là 3.5.5 nhưng không chắc.

Nhấp vào tab Bảng > Cấu trúc > Dưới Hành động Nhấp vào Chính (đặt làm chính), nhấp vào Thay đổi trên cửa sổ bật lên, cuộn sang trái và kiểm tra A_I . Đồng thời đảm bảo rằng bạn đã chọn Không có cho Mặc địnhnhập mô tả hình ảnh ở đây


5
Vì tính năng auto-inc đã bị xóa khỏi tab Operations nên có vẻ như đây là cách triển khai ngay bây giờ. Cảm ơn, @AmitKB.
Mike S.

2
Tuy nhiên khi tôi đã cố gắng mà tôi đã nhận lỗi này: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Yaakov Ainspan

Thông báo rõ ràng, bạn có thể đang cố gắng có nhiều hơn một cột tự động.
Amit Bhagat,

1
Gặp sự cố tương tự và điều này đã khắc phục sự cố của tôi
Gọi vào

1
wow, quá đơn giản. tại sao không ai đề cập đến điều này? Tôi đã mất rất nhiều thời gian để tìm ra câu trả lời như thế này. cho đến nay câu trả lời tốt nhất.
oldboy,

52

Trong phpMyAdmin, điều hướng đến bảng được đề cập và nhấp vào tab "Hoạt động". Ở bên trái bên dưới Tùy chọn bảng, bạn sẽ được phép đặt giá trị AUTO_INCREMENT hiện tại.


5
khi tôi làm điều này, hai tùy chọn duy nhất của tôi liên quan đến việc thêm auto_increment là "chuyển bảng sang" hoặc "sao chép bảng vào". tôi không muốn di chuyển hay sao chép bảng mà chỉ cần thêm auto_increment. chuyện gì đang xảy ra vậy ?? tôi đang sử dụng MySQL v5.6.
oldboy,

@oldboy Tôi cũng nhận được như bạn. Có lẽ họ đã xóa tính năng này trong các phiên bản mới hơn của XAMPP PhpMyAdmin
kevind

21

Chỉ cần chạy một truy vấn MySQL đơn giản và đặt số tăng tự động thành bất kỳ thứ gì bạn muốn.

ALTER TABLE `table_name` AUTO_INCREMENT=10000

Về mức tối đa, theo như tôi biết thì không có một, cũng không có cách nào để hạn chế số lượng như vậy.

Hoàn toàn an toàn và thực tế phổ biến là đặt số id làm khóa chính, tự động tăng số int. Có những lựa chọn thay thế như sử dụng PHP để tạo số thành viên cho bạn ở một định dạng cụ thể và sau đó kiểm tra số đó không tồn tại trước khi chèn, tuy nhiên đối với cá nhân tôi, tôi muốn sử dụng giá trị auto_inc id chính.


10
  1. Trong tab "Cấu trúc" của bảng của bạn
  2. Nhấp vào bút chì của biến bạn muốn auto_increment
  3. trong tab "Thêm" chọn "auto_increment"
  4. sau đó chuyển đến tab "Hoạt động" trong bảng của bạn
  5. Trong "Tùy chọn bảng" -> loại auto_increment -> 10000

2

Trong phpMyAdmin, nếu bạn thiết lập một trường trong bảng của mình thành tự động tăng dần, sau đó chèn một hàng và đặt giá trị của trường đó thành 10000, nó sẽ tiếp tục từ đó.


2

@AmitKB, Quy trình của bạn là đúng. Mặc dù lỗi này

Lỗi truy vấn: # 1075 - Định nghĩa bảng không chính xác; chỉ có thể có một cột tự động và nó phải được xác định là một khóa

có thể được giải quyết bằng cách đánh dấu trường đầu tiên là khóa (sử dụng biểu tượng khóa có nhãn chính), trừ khi bạn có khóa khác thì nó có thể không hoạt động.


Đã quá lâu kể từ khi tôi chơi với phpMyAdmin, tôi đã quên cách thực hiện điều này. Cảm ơn vì đã sửa chữa vấn đề phụ này. Nó đã làm việc cho tôi.
rncrtr

0

Bạn không thể đặt giá trị tối đa (ngoài việc chọn kiểu dữ liệu không thể chứa số lượng lớn, nhưng không có giá trị nào có giới hạn mà bạn yêu cầu). Bạn có thể kiểm tra điều đó bằng LAST_INSERT_ID () sau khi chèn để lấy id của thành viên mới được tạo và nếu nó quá lớn, hãy xử lý nó trong mã ứng dụng của bạn (ví dụ: xóa và từ chối thành viên).

Tại sao bạn muốn có một giới hạn trên?


0

Điều này là do sự wp_terms, wp_termmetawp_term_taxonomybảng biểu, trong đó có tất cả các ID của họ không thiết lập đểAUTO_INCREMENT

Để thực hiện việc này, hãy truy cập phpmyadmin, nhấp vào cơ sở dữ liệu mối quan tâm, wp_termsbảng, nhấp vào Tab cấu trúc, ở phía bên phải, bạn sẽ thấy một tab có tên A_I(AUTO_INCREMENT), hãy kiểm tra và lưu (Bạn chỉ làm điều này cho tùy chọn đầu tiên, trong trường hợp wp_termbạn chỉ làm điều đó cho term_id).

Làm tương tự cho wp_termmetawp_term_taxonomyđiều đó sẽ khắc phục sự cố.


Có vẻ như bạn nghĩ OP đang sử dụng WordPress, bạn tìm thông tin đó ở đâu? Tôi không thể tìm thấy bất kỳ tham chiếu nào đến WP trong câu hỏi.
Raul Sauco

0

(a) Chỉ cần nhấp vào cơ sở dữ liệu của bạn, chọn bảng của bạn. Nhấp vào 'Hoạt động'. Trong phần 'tùy chọn bảng', hãy thay đổi giá trị AUTO_INCREMENT thành giá trị mong muốn của bạn, trong trường hợp này là: 10000, nhấp vào 'Bắt ​​đầu'. (Xem hình ảnh đính kèm)

(b) Ngoài ra, bạn có thể chạy lệnh SQL trong tab SQL sau khi chọn bảng của mình. Chỉ cần gõ 'ALTER TABLE table_name AUTO_INCREMENT = 10000;' sau đó nhấp vào 'Go'. Đó là nó!! CÀI ĐẶT HÌNH ẢNH GIÁ TRỊ GIA TĂNG TỰ ĐỘNG (a)

CÀI ĐẶT HÌNH ẢNH GIÁ TRỊ GIA TĂNG TỰ ĐỘNG (B)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.