Gần đây, tôi cần chuyển đổi ứng dụng CRM dựa trên web2py được lưu trữ trên máy chủ Apache có phần phụ trợ SQLite sang MySQL. Dưới đây là các bước phù hợp với tôi. Tôi đã tạo một ứng dụng mẫu để làm việc cùng nếu bạn muốn làm theo, bạn có thể tải xuống tất cả các tệp tại đây.
Xin lưu ý:Tôi đang sử dụng phiên bản web2py 2.4.7 trên môi trường Unix. Trước khi bắt đầu, hãy đảm bảo rằng bạn đã cài đặt SQLite trên hệ thống của mình. Bạn có thể cài đặt cái này bằng pip,
pip install sqlite
hoặc bạn có thể lấy các tệp nhị phân tại http://sqlite.org/download.html. Bạn cũng cần cài đặt MySQL. Nếu bạn cần hỗ trợ, hãy làm theo hướng dẫn tại đây.
Cơ sở dữ liệu hiện tại có tất cả các bảng web2py mặc định cũng như một người dùng bảng có các trường id , start_date và end_date :
db.define_table(
'users',
Field('start_date','string'),
Field('end_date','string')
)
Mã này tuân theo cú pháp web2py DAL. Có 30.000 hàng dữ liệu trong bảng.
Làm sạch dữ liệu
Tải xuống cơ sở dữ liệu SQLite mới nhất của ứng dụng của bạn. Theo mặc định, đó là tệp có tên storage.sqlite trong thư mục “/ web2py / Applications /
$ sqlite3 storage.sqlite .dump > output_before.sql
Sử dụng trình chỉnh sửa văn bản, chỉnh sửa output_before.sql tệp:
- Xóa tất cả các dòng bắt đầu bằng
PRAGMA
,BEGIN TRANSACTION
,CREATE TABLE
vàCOMMIT
. - Xóa tất cả các dòng liên quan đến
sqlite_sequence
table (tức làDELETE FROM sqlite_sequence;
). - Đối với tất cả
INSERT INTO "<table_name>" VALUES(...)
câu lệnh, thay thế dấu ngoặc kép (" "
) trước và sau<table_name>
có dấu gạch ngược (` `
) - ví dụ.INSERT INTO `table_name` VALUES(...)
.
Cuối cùng, lưu tệp dưới dạng output_ after.sql trên máy tính để bàn của bạn.
Thiết lập MySQL
Tạo cơ sở dữ liệu MySQL trên máy chủ từ xa. Ghi lại tên cơ sở dữ liệu, tên người dùng và mật khẩu. Bạn cũng có thể thiết lập cơ sở dữ liệu cục bộ để thử nghiệm, tôi sẽ sử dụng cơ sở dữ liệu này cho hướng dẫn này:
$ mysql.server start
$ mysql -u root -p
Enter password:
mysql> create database migration;
Query OK, 1 row affected (0.03 sec)
mysql> exit;
Định cấu hình ứng dụng của bạn để sử dụng MySQL. Khởi chạy quản trị web2py của bạn. Chỉnh sửa db.py :
db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')
Lưu tệp.
Cho phép web2py khởi tạo cơ sở dữ liệu MySQL:
- Sao lưu nội dung của
/web2py/applications/<your_application>/databases/
thư mục. Sau đó, xóa nội dung của thư mục. - Quay lại quản trị viên web2py. Nhấp vào nút "quản trị cơ sở dữ liệu" để tạo các bảng trong cơ sở dữ liệu MySQL cục bộ của bạn.
Kích hoạt cơ sở dữ liệu MySQL của bạn trong thiết bị đầu cuối để kiểm tra để đảm bảo rằng các bảng trống đã được thêm vào cơ sở dữ liệu:
Thêm dữ liệu
Điều hướng đến nơi bạn đã lưu output.sql (phải là máy tính để bàn của bạn), sau đó chạy lệnh sau để thêm dữ liệu vào MySQL:
$ mysql -u root migration < output_after.sql
Quá trình này sẽ mất vài phút để thực thi hoàn toàn.
Trong quản trị viên web2py, hãy kiểm tra cơ sở dữ liệu và ứng dụng của bạn để đảm bảo rằng dữ liệu mới có thể truy cập được.