2012-01-17 35 views
5

Tôi nhận được lỗi mà tôi không thể hiểu được. Lỗi này khá đơn giản:Vi phạm ràng buộc duy nhất của Oracle tham chiếu một ràng buộc dường như không tồn tại

ORA-00001: unique constraint (*schema*.*xyz_constraint*) violated 

Tuy nhiên, điều gây nhầm lẫn của tôi là không có ràng buộc nào tồn tại. Nó chắc chắn không được định nghĩa trên bàn; DB trong câu hỏi hầu như không có tính toàn vẹn tham chiếu được xác định và bảng cụ thể mà tôi chèn dữ liệu không có khóa được xác định.

Đối với những gì nó có giá trị, tôi không thể tìm thấy các hạn chế bất cứ nơi nào trong cơ sở dữ liệu:

select * 
    from all_constraints 
    where constraint_name like '%xyz_constraint%' 

Có điều gì tôi nhìn ra? Cảm ơn.

+6

Khi một nỗ lực được thực hiện như vậy mà một độc đáo ** index ** sẽ có một bản sao, Oracle sẽ báo cáo như một ** độc đáo hạn ** vi phạm. Vì vậy, tôi sẽ đề nghị tìm kiếm các chỉ mục duy nhất ngoài các ràng buộc. –

Trả lời

4

Điều này xảy ra khi ràng buộc thuộc về một người dùng khác và bạn không có quyền đối với nó.

Hãy thử tìm kiếm nó một lần nữa cho bây giờ từ góc độ SYS

+0

Tôi sẽ phải tham gia một trong các DBA. Đương nhiên, tôi không có quyền truy cập SYS vào lược đồ. Nó sẽ rất thú vị để xem những gì đang lên, vì điều này đã được trong prod cho hai + năm mà không có một vấn đề hạn chế. Hôm nay tôi có 600 lỗi. Cảm ơn vì bạn đã phản hồi; Tôi sẽ cho bạn biết những gì tôi tìm thấy. – Ickster

+0

@Ickster: Tôi không nhớ nguyên nhân, nhưng tôi đã có chính xác hành vi tương tự và đó là những gì tôi đã nói ;-) Dù sao, chúc may mắn trong nghiên cứu của bạn và mong muốn biết chi tiết những gì nó thực sự nằm trong trường hợp của bạn – zerkms

+2

Chỉ cần truy vấn 'DBA_CONSTRAINTS' thay thế. Nếu bạn có quyền truy cập vào khung nhìn này, thì nếu ràng buộc tồn tại, nó sẽ ở đó. 'SYS' không nhất thiết được yêu cầu -' SYSTEM' cũng sẽ có quyền truy cập vào nó. –

1

Tên đối tượng lược đồ hầu như luôn được lưu trữ trong trường hợp trên. Hãy thử

select * 
from all_constraints 
where constraint_name like '%XYZ_CONSTRAINT%' 

ORA-00001 thường xảy ra cho các khóa chính trùng lặp. Bạn có chắc là bạn không có cái nào trên bàn không?

+0

Truy vấn thực tế tôi chạy chứa tên ràng buộc chính xác khi nó được trả về trong lỗi tôi nhận được. Tôi đang tích cực không có chìa khóa được xác định trên bảng. Các ràng buộc duy nhất là các khai báo NOT NULL trên một số trường. – Ickster

Các vấn đề liên quan