Lỗi MySQL khi nhập cơ sở dữ liệu


7

Tôi muốn nâng cấp Magento. Do đó trước tiên tôi muốn chuyển hệ thống sản xuất trực tiếp sang không gian làm việc phát triển. Tôi đang cố gắng nhập cơ sở dữ liệu sản xuất vào cơ sở dữ liệu sạch. Nhưng tôi không thể nhập chính xác. Tôi đã thử một số tùy chọn: xuất qua quản trị viên Magento, xuất qua phpMyAdmin với các cài đặt khác nhau bao gồm (và loại trừ) các câu lệnh như được hiển thị tại http: //www.magentoc Commerce.com/wiki/1_-_installation_and_configuration/restoring_a_backup_of_a_magento_database

Tôi đang sử dụng Magento 1.5.1.0, phpMyAdmin 4.0.8 và phiên bản mới nhất của BigDump để nhập.

Đây là lỗi tôi nhận được sau một thời gian:

Lỗi tại dòng 8699: THÊM CONSTRAINT FK_CATALOG_CATEGORY_ENTITY_DATETIME_STOREFOREIGN KEY ( store_id) TÀI LIỆU THAM KHẢO mage_core_store( store_id) TRÊN XÓA CASCADE TRÊN CẬP NHẬT CASCADE; Truy vấn: ALTER TABLE mage_catalog_category_entity_datetime ADD CONSTRAINT FK_CATALOG_CATEGORY_ENTITY_DATETIME_ATTRIBUTEFOREIGN KEY ( attribute_idTài liệu tham khảo) mage_eav_attribute( attribute_id) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT FK_CATALOG_CATEGORY_ENTITY_DATETIME_ENTITYFOREIGN KEY ( entity_id) Tài liệu tham khảo mage_catalog_category_entity( entity_id) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT FK_CATALOG_CATEGORY_ENTITY_DATETIME_STOREFOREIGN KEY ( store_id) Tài liệu tham khảo mage_core_store( store_id) ON DELETE CASCADE ON UPDATE CASCADE MySQL: không thể thêm hoặc cập nhật một hàng con: một ràng buộc khoá ngoại thất bại ( goldenm101_mage4. #sql-182e_c1d79, cONSTRAINT FK_CATALOG_CATEGORY_ENTITY_DATETIME_STOREFOREIGN kEY ( store_id) Tài liệu tham khảo mage_core_store( store_id') ON DELETE CASCADE ON uPDATE CASC)

Thông tin bổ sung: Tôi không có quyền truy cập SSH.

Lỗi sau giải pháp có thể của mageUz:

Lỗi tại dòng 1487637: THÊM CONSTRAINT FK_catalogrule_product_websiteFOREIGN KEY ( website_id) TÀI LIỆU THAM KHẢO mage_core_website( website_id) TRÊN XÓA CASCADE TRÊN CẬP NHẬT CASCADE; Truy vấn: - - ALTER TABLE mage_catalogrule_product ADD CONSTRAINT FK_catalogrule_product_customergroupFOREIGN KEY ( customer_group_id) Tài liệu tham khảo mage_customer_group( customer_group_id) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT FK_CATALOGRULE_PRODUCT_PRODUCTFOREIGN KEY ( product_id) Tài liệu tham khảo mage_catalog_product_entity( entity_id) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT FK_catalogrule_product_ruleFOREIGN KEY ( rule_id) Tài liệu tham khảo mage_catalogrule( rule_id) ON DELETE CASCADE ON uPDATE CASCADE, aDD cONSTRAINT FK_catalogrule_product_websiteFOREIGN kEY ( website_id) Tài liệu tham khảo mage_core_website( website_id) ON DELETE CASCADE ON uPDATE CASCADE MySQL: không thể thêm hoặc cập nhật một hàng con: một ràng buộc khoá ngoại thất bại ( goldenm101_mage4.#sql-182e_308afa, CONSTRAINT PHÍ FK_catalogrule_product_customergroupNGOẠI TỆ ( customer_group_id) TÀI LIỆU THAM KHẢO mage_customer_group( customer_group_id) TRÊN CASC XÓA


Câu trả lời:


11

Đó là bởi vì cơ sở dữ liệu của bạn có một ràng buộc khóa ngoại. Thực hiện theo các bước dưới đây trước khi nhập

1) Mở tệp sql đã xuất của cơ sở dữ liệu của bạn và thêm truy vấn sql sau khi bắt đầu

SET FOREIGN_KEY_CHECKS = 0;

2) Đi đến cuối tập tin và thêm

SET FOREIGN_KEY_CHECKS = 1;

Điều này nên làm việc. Nó sẽ vô hiệu hóa kiểm tra khóa ngoại trong khi nhập và sau đó sẽ kích hoạt lại.


1
Cảm ơn vì nhận xét của bạn mặc dù đó là giải pháp nên đã hoạt động vì tôi đã thêm các câu lệnh đó (như được hiển thị bởi liên kết trong bài đăng của tôi), cũng như xuất cơ sở dữ liệu qua quản trị viên Magento tự động thêm nó.
PeterPayn

2

Bạn có quyền truy cập ssh? Nếu vậy hãy thử các lệnh sau (nơi bạn nên thay thế magentodbbằng tên của cơ sở dữ liệu của bạn):

mysqldump -u root -p magentodb > magentodb.sql
mysqldump -u root -p magentodb | gzip -v > magentodb.sql.gz

Lệnh thứ hai nén cơ sở dữ liệu ngay lập tức, có thể thuận tiện khi bạn phải tải xuống. Nếu bạn không có quyền truy cập root mysql, hãy sử dụng tài khoản khác.

Giải nén cơ sở dữ liệu trên máy kiểm tra và chạy lệnh sau:

mysql -u root -p test_magentodb < magentodb.sql

Đây là phương pháp ưa thích của tôi. Cơ sở dữ liệu của chúng tôi có kích thước 2GB và các phương pháp khác chỉ đơn giản là thất bại đối với cơ sở dữ liệu lớn như vậy.


Cảm ơn bình luận của bạn mặc dù tiếc là tôi không có quyền truy cập SSH.
PeterPayn

Bạn có thể chạy một tập lệnh php có thể chạy lệnh shell không? Bạn có thể kiểm tra điều này với một cơ sở dữ liệu thử nghiệm nhỏ và nếu nó hoạt động, bạn có thể thử nó với cơ sở dữ liệu magento.
XUÂN

1
Tôi đã kiểm tra phpinfo.php của tôi và nó nói shell_exec là một chức năng bị vô hiệu hóa. Nếu điều đó trả lời câu hỏi của bạn.
PeterPayn

Điều này làm việc hoàn hảo ngay lần đầu tiên tôi thử nó. Cảm ơn bạn! Sử dụng phpMyAdmin Xuất Tôi không thể sao chép cơ sở dữ liệu sau nhiều lần thử và vài giờ.
Daniel Flippance 2/10/2015

2

Có vẻ như bảng mage_core_store được nhập ít khác nhau, tôi cũng đã gặp phải vấn đề như vậy nhiều lần khi tôi nhập / di chuyển magento db. hàng đầu tiên của một số bảng (core_store, core_website, core_store_group, customer_group) sẽ được nhập với các khóa chính khác nhau thay vì ban đầu.

Các giải pháp:

Sử dụng SET FOREIGN_KEY_CHECKS = 0;và nhập khẩu bãi chứa.

Chạy truy vấn:

SET FOREIGN_KEY_CHECKS=0;
UPDATE `core_store` SET store_id = 0 WHERE code='admin';
UPDATE `core_store_group` SET group_id = 0 WHERE name='Default';
UPDATE `core_website` SET website_id = 0 WHERE code='admin';
UPDATE `customer_group` SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;

Tôi không chắc chắn nếu tôi hiểu những gì bạn đang cố gắng nói. Ý bạn là: Xuất, chỉnh sửa tệp sql và (chỉ) thêm dòng check Kiểm tra khóa ngoại, mà không bật lại ở cuối tệp. Và nếu nó được nhập chạy truy vấn đó?
PeterPayn

@PetePayn, Chạy truy vấn sau khi nhập thành công kết xuất db của bạn
mageUz

Vì vậy, tôi đã thêm một dòng duy nhất vào một bản xuất qua phpMyAdmin (sử dụng Vim) và sử dụng bigdump để nhập nó vào cơ sở dữ liệu mới. Đó là khoảng 94% và sau đó tôi nhận được một lỗi khác: Tôi đã thêm lỗi vào câu hỏi chính.
PeterPayn

Cố gắng nhập / xuất cấu trúc cơ sở dữ liệu mà không có dữ liệu. Nếu nó có thể được nhập cấu trúc, bạn có thể thử nhập dữ liệu.
mageUz
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.