Mục nhập trùng lặp cho khóa 'PRIMARY MySQL

Mục nhập khóa trùng lặp xảy ra khi bạn đạt đến giới hạn trên của trường tăng tự động, trong trường hợp của bạn, là một int đã ký, ranh giới trên là 2147483647

Khi bản ghi cuối cùng có id 2147483647, khi bạn chèn bản ghi mới, id sẽ là 2147483648. Nhưng mysql giảm nó trong phạm vi hợp lệ và cố gắng chèn id 2147483647, do đó, nó tạo ra một mục khóa trùng lặp

IMHO tốt hơn hết là thay đổi trường chỉ mục, đặt nó thành unsigned int [4294967295] hoặc unsigned bigint [18446744073709551615]. Có lẽ int không dấu là đủ cho yêu cầu của khách hàng của bạn và nó sử dụng 4 byte thay vì 8 của int lớn để chỉ mục sẽ làm điều đó tốt hơn về cpu và bộ nhớ

ALTER TABLE test SỬA ĐỔI id INT UNSIGNED NOT NULL AUTO_INCREMENT;

Giải pháp hiện tại hoạt động vì bạn đang sử dụng lại id của các hàng đã bị xóa, lỗi khóa trùng lặp sẽ xảy ra một lần nữa tùy thuộc vào cách các hàng có thể bị xóa khỏi bảng trước đó

Ngày 15/4/2017 1. 33h, troll nổi tiếng Thomas 'Đầu Nhọn' Lahn viết
> Jerry Stuckle đã viết
>
>> Ngày 15/4/2017 10. 05 giờ sáng, Thomas 'Tai nhọn' Lahn đã viết
>>> Tôi KHÔNG nói rằng nó giải quyết được vấn đề. Tập đọc
>> Bạn nói. ". miễn là một người *biết* rằng bất kỳ khóa ngoại nào đề cập đến
>> đến bảng đó cũng không hợp lệ, thì không có vấn đề gì. "
>>
>> Không có vấn đề thì phải giải quyết vấn đề. bạn không thể
>> backpedal ra khỏi nó
>
> Bạn nên lắng nghe những lời lảm nhảm vô tâm của mình một lúc
>

ROFLMAO. Tôi chỉ trích dẫn BẠN


>>> Tính toàn vẹn của dữ liệu không thể bị xâm phạm khi nhập vì KHÔNG CÓ GÌ LIÊN QUAN
>>> đang tham khảo bảng YET
>>
>> Một lần nữa, bạn cho thấy mình KHÔNG HIỂU GÌ về tính toàn vẹn của dữ liệu trong một
>> cơ sở dữ liệu quan hệ
>
> Nồi gọi ấm đen
>

ROFLMAO. Một cuộc tấn công ad hominem khác


>> Nhập dữ liệu vào 2 bảng liên quan là liên quan
>
> Nhưng chúng KHÔNG NÊN có liên quan trong trường hợp này theo bất kỳ ý nghĩa thực tế nào của
> từ. KHÔNG NÊN có bất kỳ bản ghi nào trong bảng đầu tiên đề cập đến
> cái thứ hai vì cái thứ hai là Rỗng. [Các ràng buộc khóa ngoại có thể
> đảm bảo điều đó đang hoạt động, nhưng không phải với MyISAM; . ]
>

Sau đó, làm cách nào để bạn nhập dữ liệu từ RDB này sang RDB khác?
theo bạn, bạn không thể


> Nếu nó ĐÃ BỊ HỎNG, bạn KHÔNG THỂ phá vỡ nó LẠI
>

Nó không bị hỏng trước khi bạn tham gia


> Còn AISB nếu nó BỊ HỎNG thì cần phải SỬA TRƯỚC. TRƯỚC
> cố gắng nhập BẤT CỨ ĐIỀU GÌ khác
>

Nó không bị hỏng trước khi bạn tham gia


>>>> Dữ liệu được chèn vào cơ sở dữ liệu mới KHÔNG "rỗng"
>>> Tôi KHÔNG nói rằng *dữ liệu* trống. Tập đọc
>>
>> Một lần nữa. "Tôi phải nhấn mạnh *một lần nữa* rằng bảng mục tiêu *trong này
>>>>> trường hợp* là *trống*. "
>>
>> Không có chuyện "dữ liệu rỗng"
>
> Thỉnh thoảng bạn nên lắng nghe những tiếng lảm nhảm rời rạc, không nhất quán của mình
>

ROFLMAO. Tôi đang trích dẫn BẠN


> Nếu không có thứ gọi là ?dữ liệu trống?, tại sao bạn lại tuyên bố rằng có
> có thể được?
>

Tôi chưa bao giờ tuyên bố như vậy


> Và tôi KHÔNG nói rằng có DỮ LIỆU trống. A nói rằng mục tiêu BẢNG
> trống ở đây. Giờ đã hiểu?
>

Không. Đó không phải là những gì bạn đã nói, cho dù bạn có cố gắng thế nào đi chăng nữa


>>>>> JACK và chỉ *cố gắng* thêm khóa chính [hoặc bất kỳ khóa nào khác]
>>>>> [quay lại] với các kiểm tra chính *đã bật* sẽ *dẫn đến* trong việc *phát hiện* những kiểm tra đó
>>>>> mâu thuẫn rồi. AISB
>>>> Nó * CÓ THỂ * phát hiện sự không nhất quán. Ví dụ, nếu có một người nước ngoài
>>>> key trỏ đến khóa chính không tồn tại, nó sẽ phát hiện ra rằng
>>>> Tuy nhiên, nếu khóa ngoại trỏ đến *WRONG ROW* vì *THE
>>>> PRIMARY KEY ĐÃ THAY ĐỔI*, không phát hiện lỗi
>>>
>>> Nhưng TRONG TRƯỜNG HỢP NÀY, không nên có khóa ngoại đề cập đến điều đó
>>> bảng ở nơi đầu tiên. Nếu đúng như vậy, tính toàn vẹn của dữ liệu đã được
>>> bị xâm phạm
>>
>> Vớ vẩn. Rất có thể đã có một khóa ngoại liên quan
>
> Nhưng sau đó SỰ TÍCH HỢP DỮ LIỆU SẼ BỊ XÂM PHẠM
>

Không. Dữ liệu chính xác trước khi bạn tham gia


>> Nhưng việc đánh số lại khóa chính của bảng hiện đã phá vỡ điều đó
>> mối quan hệ
>
> Có các bản ghi trong bất kỳ bảng nào tham chiếu đến bảng mục tiêu EMPTY
> bằng khóa ngoại, thì mối quan hệ ĐÃ BỊ HỎNG. Hoặc KHÔNG CÓ
> các bản ghi như vậy, thì KHÔNG CÓ GÌ sẽ bị phá vỡ bằng cách thêm dữ liệu vào BẢNG Rỗng
>

Không. Một lần nữa bạn thể hiện sự thiếu hiểu biết hoàn toàn về
Cơ sở dữ liệu quan hệ. Nhưng điều đó khá bình thường đối với bạn. Không có thắc mắc
bạn là một troll nổi tiếng trong rất nhiều nhóm tin tức. Bạn nhấn mạnh vào
thể hiện sự thiếu hiểu biết của bạn hết lần này đến lần khác

Mục nhập trùng lặp cho khóa chính là gì?

Khi tạo khóa chính hoặc ràng buộc duy nhất sau khi tải dữ liệu , bạn có thể gặp lỗi "Mục nhập trùng lặp cho khóa 'PRIMARY'". Nếu dữ liệu trong cơ sở dữ liệu nguồn hợp lệ và không có bất kỳ bản sao nào, bạn nên kiểm tra đối chiếu nào được sử dụng trong cơ sở dữ liệu MySQL của mình.

Làm cách nào để giải quyết mục nhập trùng lặp cho MySQL chính?

Cách khắc phục. Mục nhập trùng lặp MySQL cho khóa CHÍNH trên. .
Tạo bản sao lưu của cơ sở dữ liệu bằng cách phát hành. mysqldump -uUSER -pPASSWORD DBNAME > /tmp/my_backup. sql. .
Thả và tạo lại cơ sở dữ liệu. thả cơ sở dữ liệu DBNAME;
Tải lại quá trình nhập. mysql -uUSER -pPASSWORD DBNAME < /tmp/my_backup. sql

Khóa chính có thể trùng lặp trong MySQL không?

Khi bạn chèn một hàng mới vào bảng nếu hàng đó gây ra sự trùng lặp trong chỉ mục UNIQUE hoặc PRIMARY KEY , MySQL sẽ báo lỗi . Tuy nhiên, nếu bạn chỉ định tùy chọn ON DUPLICATE KEY UPDATE trong câu lệnh INSERT, thay vào đó, MySQL sẽ cập nhật hàng hiện có với các giá trị mới.

Các giá trị trùng lặp có thể được nhập vào khóa chính không?

Bạn có thể xác định các khóa cho phép các giá trị trùng lặp. Tuy nhiên, không cho phép trùng lặp trên khóa chính vì giá trị của khóa chính của bản ghi phải là duy nhất.

Chủ Đề