2015-05-22 33 views
16
CREATE TABLE `movies`.`movie` 
(`movie_id` INT(3) NULL AUTO_INCREMENT, `movie_name` VARCHAR(25) NULL, 
    `movie_embedded_id` VARCHAR(50) NULL, `rating_no` INT(3) NULL, 
    `movie_description` VARCHAR(50) NULL, PRIMARY KEY (`movie_id`(3))) ENGINE = InnoDB; 

tôi tiếp tục nhận được lỗi này:tôi tiếp tục nhận được mysql này mã lỗi # 1089

#1089 - Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys.

nhưng tôi đã không có ý tưởng những gì nó có nghĩa là, bất cứ ai có một đầu mối?

+0

Nó có thể là «PRIMARY KEY (\' movie_id \ '(3))' thay đổi nó thành 'PRIMARY KEY (\' movie_id \ ')' – dan08

+0

Với tôi, tôi sẽ lưu nó mà không cần khóa chính. Một khi bạn lưu nó, chỉ cần chỉnh sửa bảng tại cấu trúc – Hazirahmusa

Trả lời

62

Với phần

PRIMARY KEY (`movie_id`(3)) 

bạn đang nói mysql để tạo ra một tiểu chìa khóa phần * trên 3 chữ cái đầu tiên của id phim. Điều này chỉ hoạt động đối với các loại chuỗi.

Bạn cần phải sử dụng

PRIMARY KEY (`movie_id`) 

mà không cung cấp một chiều dài.

* Điều này có chắc là truy vấn dẫn đến lỗi không? Không bao giờ thấy rằng trên một khóa chính, nó được sử dụng cho các chỉ mục.

+0

cảm ơn bạn rất nhiều, tôi đã không nhận ra đây là những gì tôi đã yêu cầu. – tinOfBeans

0

Bạn cũng có thể gặp lỗi này khi tạo chỉ mục nếu bạn chỉ định độ dài tiền tố dài hơn độ dài của cột thực tế. Nếu bạn đã cố gắng tạo chỉ mục có chứa someColumn(20) nhưng trong bảng someColumnVARCHAR(15), thì lỗi này sẽ xảy ra.

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