Điều này khiến tôi trở nên điên khùng: Tôi đã tạo một bảng phân vùng trên một máy chủ, di chuyển kết xuất SQL đến máy chủ khác và cố gắng chạy chèn. Nó thất bại, nhưng tôi đang gặp khó khăn trong việc tìm ra lý do tại sao. Google và các diễn đàn và tài liệu của MySQL không có nhiều trợ giúp.Vấn đề quyền của MySQL - không phải là vấn đề
Truy vấn không trông như thế này (cắt ngắn cho ngắn gọn và rõ ràng, tên thay đổi để bảo vệ sự vô tội):
CREATE TABLE `my_precious_table` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`somedata` varchar(20) NOT NULL,
`aTimeStamp` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`,`aTimeStamp`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='/opt/data/data2/data_foo/' INDEX DIRECTORY='/opt/data/data2/idx_foo/'
/*!50100 PARTITION BY RANGE (year(aTimeStamp)) SUBPARTITION BY HASH (TO_DAYS(aTimeStamp))
(PARTITION p0 VALUES LESS THAN (2007) (SUBPARTITION foo0 DATA DIRECTORY = '/opt/data/data2/data_foo' INDEX DIRECTORY = '/opt/data/data2/idx_foo' ENGINE = MyISAM),
PARTITION p1 VALUES LESS THAN (2008) (SUBPARTITION foo1 DATA DIRECTORY = '/opt/data/data2/data_foo' INDEX DIRECTORY = '/opt/data/data2/idx_foo' ENGINE = MyISAM),
PARTITION p2 VALUES LESS THAN (2009) (SUBPARTITION foo2 DATA DIRECTORY = '/opt/data/data2/data_foo' INDEX DIRECTORY = '/opt/data/data2/idx_foo' ENGINE = MyISAM),
PARTITION p3 VALUES LESS THAN MAXVALUE (SUBPARTITION foo3 DATA DIRECTORY = '/opt/data/data2/data_foo' INDEX DIRECTORY = '/opt/data/data2/idx_foo' ENGINE = MyISAM)) */;
Lỗi này là:
LỖI 1 (HY000): Can' t tạo/ghi vào tập tin '/opt/data/data2/idx_foo/my_precious_table#P#p0#SP#foo0.MYI' (Errcode: 13)
"không thể tạo/ghi vào tập tin" nhìn như vấn đề quyền với tôi, nhưng quyền trên các thư mục được nhắm mục tiêu như vậy:
drwxrwxrwx 2 mysql mysql 4096 Dec 1 16:24 data_foo
drwxrwxrwx 2 mysql mysql 4096 Dec 1 16:25 idx_foo
Đối với đá, tôi đã thử chowning vào thư mục gốc: root và bản thân mình. Điều này không khắc phục được sự cố.
Máy chủ nguồn MySQL là phiên bản 5.1.22-rc-log. Máy chủ đích là 5.1.29-rc-cộng đồng. Cả hai đều đang chạy trên các cài đặt CentOS gần đây.
Chỉnh sửa: Một nghiên cứu nhỏ hơn cho thấy rằng Errcode 13, trên thực tế, là lỗi quyền. Nhưng làm thế nào tôi có thể nhận được điều đó trên rwxrwxrwx
?
Chỉnh sửa: Đề xuất tuyệt vời của Bill Karwin đã không phát hành. Tôi đang làm việc như người dùng root, và có tất cả các cờ đặc quyền được thiết lập.
Chỉnh sửa: Tạo bảng KHÔNG chỉ định thư mục dữ liệu cho các phân vùng riêng lẻ - nhưng tôi cần đặt những phân vùng này trên đĩa lớn hơn ổ đĩa mặc định. Và tôi không thể chỉ định DATA/INDEX DIRECTORY ở cấp độ bảng - đó không phải là hợp pháp trong phiên bản MySQL mà tôi đang sử dụng (5.1.29-rc-community).
Chỉnh sửa: Cuối cùng, câu trả lời là nhờ danh sách gửi thư của MySQL và nhân viên CNTT nội bộ. Xem bên dưới.
Bạn có chắc chắn đường dẫn chính xác không? –
Có. Tôi đã kiểm tra điều này nhiều lần. – bradheintz