הבדלים בין גרסאות בדף "אגרונט לייב באינטרנט"
(←שינוי שמות הטבלאות) |
(←שינוי שמות הטבלאות) |
||
שורה 68: | שורה 68: | ||
{{תיבת אזהרה|יש להעביר את המידע מהטבלאות ולא את מבנה הטבלאות!}} | {{תיבת אזהרה|יש להעביר את המידע מהטבלאות ולא את מבנה הטבלאות!}} | ||
+ | <!-- | ||
== שינוי שמות הטבלאות == | == שינוי שמות הטבלאות == | ||
שורה 75: | שורה 76: | ||
RENAME TABLE Reservations TO Reservations;</highlightSyntax> | RENAME TABLE Reservations TO Reservations;</highlightSyntax> | ||
foo הינו ה-subdomain של האתר. | foo הינו ה-subdomain של האתר. | ||
+ | --> | ||
== עדכון התוכנה אצל הלקוחות == | == עדכון התוכנה אצל הלקוחות == |
גרסה מ־19:17, 3 במאי 2010
האגרונט החדש מסוגל לעבוד מול בסיס הנתונים של הלקוח וכך לאפשר לקוראים להאריך השאלות ולבצע הזמנות כותרים ישירות מול הספריה.
תוכן עניינים
התקנת mysql
כדי לעבוד בצורה זאת, כך שה-db של הלקוח יעבוד עם שרת האגרונט יש לבצע מספר פעולות ליצירת השיתוף. נצטרך ליצור אצל הלקוח mysql שניתן להורידו מאתר mysql. צריך להתקין את ה-mysql אצל הלקוח במחשב שעובד 24/7.
ניכנס ל-mysql שהתקנו באמצעות שורת הפקודה: <highlightSyntax language="bash">mysql -u root -p</highlightSyntax> ניצור database שישמש גם את הלקוח וגם את האגרונט: <highlightSyntax language="mysql">CREATE DATABASE lib_data;</highlightSyntax> לאחר מכן, כדי להתחבר משרת האגרונט ללקוח צריך לאפשר זאת ב-mysql של הלקוח: <highlightSyntax language="mysql">GRANT ALL ON lib_data.* TO lib_data_user@62.90.134.171 IDENTIFIED BY 'PASSWORD';</highlightSyntax>
לאחר מכן, נבדוק אם הגדרנו זאת כהלכה. נריץ את הפקודה הבאה משרת האגרונט: <highlightSyntax language="bash">mysql -h remote_host -u lib_data_user -Ap lib_data</highlightSyntax>
יצירת טבלאות
לאחר מכן נצטרך ליצור את שלושת הטבלאות שדרושים לשיטה זו: <highlightSyntax language="mysql">CREATE TABLE `Loans` (
`ID` int(11) NOT NULL AUTO_INCREMENT, `card_no` int(11) DEFAULT NULL, `copy_no` int(11) DEFAULT NULL, `date_borrowed` datetime NOT NULL, `date_returned` datetime DEFAULT NULL, `date_promise` datetime DEFAULT NULL, `ismanuy` tinyint(4) DEFAULT '0', PRIMARY KEY (`ID`), UNIQUE KEY `card_no_2` (`card_no`,`copy_no`,`date_borrowed`), KEY `card_no` (`card_no`), KEY `copy_no` (`copy_no`), KEY `date_borrowed` (`date_borrowed`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `LoansHistory` (
`ID` int(11) NOT NULL AUTO_INCREMENT, `card_no` int(11) DEFAULT NULL, `copy_no` int(11) DEFAULT NULL, `date_borrowed` datetime NOT NULL, `date_returned` datetime DEFAULT NULL, `date_promise` datetime DEFAULT NULL, `ismanuy` int(11) DEFAULT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `card_no_2` (`card_no`,`copy_no`,`date_borrowed`), KEY `card_no` (`card_no`), KEY `copy_no` (`copy_no`), KEY `date_borrowed` (`date_borrowed`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `Reservations` (
`res_no` int(11) NOT NULL AUTO_INCREMENT, `reader_no` int(11) NOT NULL, `title_no` int(11) NOT NULL, `By_copy` int(11) DEFAULT NULL, `reserve_date` datetime DEFAULT NULL, `DeadLineDate` datetime DEFAULT NULL, `ExpireDate` datetime DEFAULT NULL, `SendEmail` tinyint(4) DEFAULT NULL, PRIMARY KEY (`res_no`), UNIQUE KEY `reader_no_2` (`reader_no`,`title_no`), KEY `title_no` (`title_no`), KEY `reader_no` (`reader_no`), KEY `reserve_date` (`reserve_date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;</highlightSyntax>
העברת המידע מהאקסס ל-mysql
עכשיו תוכל להעביר את ה-data אל הטבלאות מה-lib_data.mdb של הלקוח לטבלאות הנ"ל (מומלץ לעשות זאת אצל הלקוח). ניתן לעשות זאת באמצעות MS Access to MySQL. הכלי הינו gui וקל לתפעול.
אזהרה: יש להעביר את המידע מהטבלאות ולא את מבנה הטבלאות! |
עדכון התוכנה אצל הלקוחות
יש ליצור קישור מה-lib_data ל-mysql אצל הלקוח לטבלאות החדשות, כאשר השמות של הטבלאות באקסס הן ללא ה-prefix (אבל מצביעות לטבלאות עם prefix). בנוסף, נעדכן את יחסי הגומלין של הטבלאות וכמו כן ניצור קישור בין lib_appml.mdb ל-mysql (ללא צורך בעדכון הקשרי גומלין ב-lib_appml).
יצירת טריגרים
ניצור טריגרים שיעזרו לנו ליצור database "חי" באגרונט. בשביל הטריגרים נצטרך לייבא את הטבלה copies מה-lib_data (רק לייבא) בעזרת ה-tool שהוזכר קודם (MS Access to MySQL). יצירת הטריגרים מתבצעת כדלקמן: <highlightSyntax language="mysql">CREATE TRIGGER update_loan_copy_status_on_insert AFTER INSERT ON Loans FOR EACH ROW UPDATE copies SET copies.status = 2 WHERE copies.copy_no = NEW.copy_no;
CREATE TRIGGER update_loan_copy_status_on_delete AFTER DELETE ON Loans FOR EACH ROW UPDATE copies SET copies.status = 1 WHERE copies.copy_no = OLD.copy_no;
DELIMITER |
CREATE TRIGGER update_reservation_time_on_insert BEFORE INSERT ON Reservations FOR EACH ROW IF (NEW.reserve_date IS NULL) THEN SET NEW.reserve_date = NOW(); END IF;|
DELIMITER ;</highlightSyntax>
יצירת סקריפט יבוא לעותקים
בשביל שיופיעו העותקים החדשים עם סטטוס מעודכן, נריץ סקריפט אוטומטי שייבא באופן אוטומטי פעם ביום את הטבלה copies מה-lib_data אל ה-mysql. מבצעים זאת בעזרת MS Access to MySQL.