הבדלים בין גרסאות בדף "אגרונט לייב באינטרנט"

מתוך אגרון - וויקיפדיה
קפיצה אל: ניווט, חיפוש
(יצירת טבלאות)
(עדכון סקריפט גיבוי)
 
(27 גרסאות ביניים של 2 משתמשים אינן מוצגות)
שורה 9: שורה 9:
 
<highlightSyntax language="mysql">CREATE DATABASE lib_data;</highlightSyntax>
 
<highlightSyntax language="mysql">CREATE DATABASE lib_data;</highlightSyntax>
 
לאחר מכן, כדי להתחבר משרת האגרונט ללקוח צריך לאפשר זאת ב-mysql של הלקוח:
 
לאחר מכן, כדי להתחבר משרת האגרונט ללקוח צריך לאפשר זאת ב-mysql של הלקוח:
<highlightSyntax language="mysql">GRANT ALL ON lib_data.* TO lib_data_user@62.90.134.171 IDENTIFIED BY 'PASSWORD';</highlightSyntax>
+
<highlightSyntax language="mysql">GRANT ALL ON lib_data.* TO lib_data_user@library.org.il IDENTIFIED BY 'PASSWORD';</highlightSyntax>
 
{{תיבת שים לב|יש לאפשר חיבור מהאגרונט (www.library.org.il) לשרת ה-mysql אצל הלקוח. לכן, יש לפתוח את פורט 3306 שמשמש את ה-mysql}}
 
{{תיבת שים לב|יש לאפשר חיבור מהאגרונט (www.library.org.il) לשרת ה-mysql אצל הלקוח. לכן, יש לפתוח את פורט 3306 שמשמש את ה-mysql}}
 
לאחר מכן, נבדוק אם הגדרנו זאת כהלכה. נריץ את הפקודה הבאה משרת האגרונט:
 
לאחר מכן, נבדוק אם הגדרנו זאת כהלכה. נריץ את הפקודה הבאה משרת האגרונט:
שורה 25: שורה 25:
 
   `date_promise` datetime DEFAULT NULL,
 
   `date_promise` datetime DEFAULT NULL,
 
   `ismanuy` tinyint(4) DEFAULT '0',
 
   `ismanuy` tinyint(4) DEFAULT '0',
 +
`LoanType` int(11) DEFAULT NULL,
 
   PRIMARY KEY (`ID`),
 
   PRIMARY KEY (`ID`),
 
   UNIQUE KEY `card_no_2` (`card_no`,`copy_no`,`date_borrowed`),
 
   UNIQUE KEY `card_no_2` (`card_no`,`copy_no`,`date_borrowed`),
שורה 30: שורה 31:
 
   KEY `copy_no` (`copy_no`),
 
   KEY `copy_no` (`copy_no`),
 
   KEY `date_borrowed` (`date_borrowed`)
 
   KEY `date_borrowed` (`date_borrowed`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  
 
CREATE TABLE `LoansHistory` (
 
CREATE TABLE `LoansHistory` (
שורה 40: שורה 41:
 
   `date_promise` datetime DEFAULT NULL,
 
   `date_promise` datetime DEFAULT NULL,
 
   `ismanuy` int(11) DEFAULT NULL,
 
   `ismanuy` int(11) DEFAULT NULL,
 +
`LoanType` int(11) DEFAULT NULL,
 
   PRIMARY KEY (`ID`),
 
   PRIMARY KEY (`ID`),
 
   UNIQUE KEY `card_no_2` (`card_no`,`copy_no`,`date_borrowed`),
 
   UNIQUE KEY `card_no_2` (`card_no`,`copy_no`,`date_borrowed`),
שורה 45: שורה 47:
 
   KEY `copy_no` (`copy_no`),
 
   KEY `copy_no` (`copy_no`),
 
   KEY `date_borrowed` (`date_borrowed`)
 
   KEY `date_borrowed` (`date_borrowed`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  
 
CREATE TABLE `Reservations` (
 
CREATE TABLE `Reservations` (
שורה 56: שורה 58:
 
   `ExpireDate` datetime DEFAULT NULL,
 
   `ExpireDate` datetime DEFAULT NULL,
 
   `SendEmail` tinyint(4) DEFAULT NULL,
 
   `SendEmail` tinyint(4) DEFAULT NULL,
 +
`SendLetter` tinyint(4) DEFAULT NULL,
 +
`SendSMS` tinyint(4) DEFAULT NULL,
 +
`SendSMS2` tinyint(4) DEFAULT NULL,
 +
`DateSend` datetime DEFAULT NULL,
 +
`DateReceived` datetime DEFAULT NULL,
 +
`IsReader` tinyint(4) DEFAULT NULL,
 
   PRIMARY KEY (`res_no`),
 
   PRIMARY KEY (`res_no`),
   UNIQUE KEY `reader_no_2` (`reader_no`,`title_no`),
+
   UNIQUE KEY `reader_no_2` (`reader_no`,`title_no`,`By_copy`,`reserve_date`),
 
   KEY `title_no` (`title_no`),
 
   KEY `title_no` (`title_no`),
 
   KEY `reader_no` (`reader_no`),
 
   KEY `reader_no` (`reader_no`),
 
   KEY `reserve_date` (`reserve_date`)
 
   KEY `reserve_date` (`reserve_date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;</highlightSyntax>
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;</highlightSyntax>
 
{{תיבת שים לב|ניתן להריץ את הפקודות גם מהלקוח וגם משרת האגרונט. האחרון בגלל ההרשאה שנתנו בהתחלה.}}
 
{{תיבת שים לב|ניתן להריץ את הפקודות גם מהלקוח וגם משרת האגרונט. האחרון בגלל ההרשאה שנתנו בהתחלה.}}
 +
{{תיבת שים לב|עקב תיקון מבנה טבלאות Loans LoansHistory Reservations בתאריך 15/04/2011, ניתן לבצע עדכון לטבלאות קיימות ע"י הרצת הפקודות הבאות:
 +
<highlightSyntax language="mysql">
 +
ALTER TABLE Reservations ADD COLUMN (
 +
SendLetter tinyint(4) DEFAULT NULL,
 +
SendSMS tinyint(4) DEFAULT NULL,
 +
SendSMS2 tinyint(4) DEFAULT NULL,
 +
DateSend datetime DEFAULT NULL,
 +
DateReceived datetime DEFAULT NULL,
 +
IsReader tinyint(4) DEFAULT NULL);
 +
ALTER TABLE Loans ADD COLUMN LoanType int(11) DEFAULT NULL;
 +
ALTER TABLE LoansHistory ADD COLUMN LoanType int(11) DEFAULT NULL;
 +
ALTER TABLE reservations DROP KEY reader_no_2;
 +
ALTER TABLE reservations ADD UNIQUE KEY reader_no_2 (`reader_no`,`title_no`,`By_copy`,`reserve_date`);
 +
</highlightSyntax>
 +
}}
  
 
== העברת המידע מהאקסס ל-mysql ==
 
== העברת המידע מהאקסס ל-mysql ==
 
עכשיו תוכל להעביר את ה-data אל הטבלאות מה-lib_data.mdb של הלקוח לטבלאות הנ"ל (מומלץ לעשות זאת אצל הלקוח). ניתן לעשות זאת באמצעות [http://www.bullzip.com/products/a2m/info.php MS Access to MySQL]. הכלי הינו gui וקל לתפעול.
 
עכשיו תוכל להעביר את ה-data אל הטבלאות מה-lib_data.mdb של הלקוח לטבלאות הנ"ל (מומלץ לעשות זאת אצל הלקוח). ניתן לעשות זאת באמצעות [http://www.bullzip.com/products/a2m/info.php MS Access to MySQL]. הכלי הינו gui וקל לתפעול.
{{תיבת אזהרה|יש להעביר את המידע מהטבלאות ולא את מבנה הטבלאות!}}
+
{{תיבת אזהרה|יש להעביר את המידע מהטבלאות ולא את מבנה הטבלאות! את מבנה הטבלאות יצרנו כבר בשלב הקודם.}}<!--
 
 
 
== שינוי שמות הטבלאות ==
 
== שינוי שמות הטבלאות ==
  
 
נצטרך לשנות את 3 הטבלאות שיצרנו לשם חדש עם prefix כמו של ה-subdomain של האתר (לדוגמא, ה-prefix של אתר יקנעם הינו yoqneam). הפקודה הבאה תעשה לנו את העבודה:
 
נצטרך לשנות את 3 הטבלאות שיצרנו לשם חדש עם prefix כמו של ה-subdomain של האתר (לדוגמא, ה-prefix של אתר יקנעם הינו yoqneam). הפקודה הבאה תעשה לנו את העבודה:
<highlightSyntax language="mysql">RENAME TABLE Loans TO foo_Loans;
+
<highlightSyntax language="mysql">RENAME TABLE Loans TO Loans;
RENAME TABLE LoansHistory TO foo_LoansHistory;
+
RENAME TABLE LoansHistory TO LoansHistory;
RENAME TABLE Reservations TO foo_Reservations;</highlightSyntax>
+
RENAME TABLE Reservations TO Reservations;</highlightSyntax>
 
foo הינו ה-subdomain של האתר.
 
foo הינו ה-subdomain של האתר.
 +
-->
 +
 
== עדכון התוכנה אצל הלקוחות ==
 
== עדכון התוכנה אצל הלקוחות ==
יש ליצור קישור מה-lib_data ל-mysql אצל הלקוח לטבלאות החדשות, כאשר השמות של הטבלאות באקסס הן ללא ה-prefix (אבל מצביעות לטבלאות עם prefix). בנוסף, נעדכן את יחסי הגומלין של הטבלאות וכמו כן ניצור קישור בין lib_appml.mdb ל-mysql (ללא צורך בעדכון הקשרי גומלין ב-lib_appml).
+
עדכון התוכנה מתחלק ל-2 שלבים: עדכון ה-lib_data ועדכון ה-lib_appml.
 +
{{תיבת אזהרה|יש לבצע גיבוי גם ל-lib_data וגם ל-lib_appml לפני שנמשיך.}}
 +
 
 +
===lib_data ===
 +
 
 +
# כדי ליצור קישור מה-lib_data ל-mysql נצטרך להתקין [http://dev.mysql.com/downloads/connector/odbc/5.1.html MySQL ODBC]. הורידו והתקינו את התוסף בשרת.
 +
# ניצור DSN ל-mysql כדי שאקסס יוכל להתקשר ל-mysql. ניכנס ל-control panel ושם ל-administrative tools. נבחר ב-data sources (odbc). ניצור בכרטיסיית system DSN קישור לבסיס נתונים שיצרנו ב-mysql לעיל.
 +
# נחזור ל-lib_data ונסיר את כל הקשרי גומלין של שלושת הטבלאות: loans, loans_history ו-reservations.
 +
# נמחק את שלושת הטבלאות הנ"ל.
 +
# נוסיף את שלושת הטבלאות של ה-mysql שיצרנו קודם ל-lib_data באמצעות הקישור של ה-odbc.
 +
# ניצור מחדש את קשרי הגומלין של הטבלאות החדשות: הטבלה loans אמור להיות מקושרת ל-readers ו-copies; הטבלה reservations אמורה להיות מקושרת ל-readers ו-titles. {{תיבת אזהרה|הטבלה loans_history אינה מקושרת לשום טבלה.}}
 +
 
 +
===lib_appml ===
 +
 
 +
# נוסיף את קשרי הגומלין כפי שעשינו בחלק הקודם לשלושת הטבלאות החדשות.
 +
# נסיר את שלושת הטבלאות הישנות.
 +
 
 +
{{תיבת שימו לב|שמות הטבלאות החדשות אמורות להיות באותו שם של הטבלאות הישנות.}}
  
 
== יצירת טריגרים ==
 
== יצירת טריגרים ==
 
ניצור טריגרים שיעזרו לנו ליצור database "חי" באגרונט. בשביל הטריגרים נצטרך לייבא את הטבלה copies מה-lib_data (רק לייבא) בעזרת ה-tool שהוזכר קודם (MS Access to MySQL). יצירת הטריגרים מתבצעת כדלקמן:
 
ניצור טריגרים שיעזרו לנו ליצור database "חי" באגרונט. בשביל הטריגרים נצטרך לייבא את הטבלה copies מה-lib_data (רק לייבא) בעזרת ה-tool שהוזכר קודם (MS Access to MySQL). יצירת הטריגרים מתבצעת כדלקמן:
<highlightSyntax language="mysql">CREATE TRIGGER update_loan_copy_status_on_insert  
+
<highlightSyntax language="mysql">CREATE TRIGGER update_loan_copy_status_on_insert
AFTER INSERT ON foo_Loans FOR EACH ROW UPDATE copies SET copies.status = 2  
+
AFTER INSERT ON Loans FOR EACH ROW UPDATE copies SET copies.status = 2
 
WHERE copies.copy_no = NEW.copy_no;
 
WHERE copies.copy_no = NEW.copy_no;
  
CREATE TRIGGER update_loan_copy_status_on_delete  
+
CREATE TRIGGER update_loan_copy_status_on_delete
AFTER DELETE ON foo_Loans FOR EACH ROW UPDATE copies SET copies.status = 1  
+
AFTER DELETE ON Loans FOR EACH ROW UPDATE copies SET copies.status = 1
 
WHERE copies.copy_no = OLD.copy_no;
 
WHERE copies.copy_no = OLD.copy_no;
  
 
DELIMITER |
 
DELIMITER |
  
CREATE TRIGGER update_reservation_time_on_insert  
+
CREATE TRIGGER update_reservation_time_on_insert
BEFORE INSERT ON foo_Reservations FOR EACH ROW  
+
BEFORE INSERT ON Reservations FOR EACH ROW
IF (NEW.reserve_date IS NULL) THEN SET NEW.reserve_date = NOW; END IF;|  
+
IF (NEW.reserve_date IS NULL) THEN SET NEW.reserve_date = NOW(); END IF;|
  
 
DELIMITER ;</highlightSyntax>
 
DELIMITER ;</highlightSyntax>
 
{{תיבת שים לב|לטריגר האחרון נצטרך לשנות את ה-delimeter (כפי שניתן לראות בפקודות).}}
 
{{תיבת שים לב|לטריגר האחרון נצטרך לשנות את ה-delimeter (כפי שניתן לראות בפקודות).}}
  
== יצירת סקריפט יבוא לעותקים ==
+
== הגדרת אגרונט ==
 +
יש לבצע הגדרות ב[[אגרונט_-_משתנים_לניהול|משתני הניהול של הספריה]] בתוך פאנל הניהול. יש להגדיר את המשתנים הבאים:
 +
:*live_driver
 +
:*live_database
 +
:*live_user
 +
:*live_password
 +
:*live_prefix
 +
:* אם יש שימוש בגירסת אגרון 10 יש להוסיף את המשתנה agron10 למשתני הניהול.
 +
{{תיבת שים לב|את הערכים יש לקחת לפי ההגדרות שביצענו קודם.}}
 +
 
 +
== יצירת סקריפט יבוא ==
 +
 
 +
כרטיס הקורא מתבסס על ה-data של ה-mysql המרוחק (כלל הטבלאות שב-lib_data), לכן נצטרך להריץ סקריפט אוטומטי שייבא באופן אוטומטי פעם ביום את הטבלאות מה-lib_data של הספריה אל ה-mysql. מבצעים זאת בעזרת MS Access to MySQL. בעזרת הכלי הנ"ל נבצע את זה פעם אחת ולפני שנריץ נשמור את הגדרות היבוא (יש לחצן במסך האחרון לפני ההרצה) כדי ליצור סקריפט מהגדרות אלו.
 +
 
 +
נגדיר סקריפט בשרת שירוץ פעם ביום ויריץ את הפקודה הבאה:
 +
<pre>"PATH_OF_MSACCESS_TO_MYSQL\EXECUTE.exe" SETTINGS="move_lib_data.ini", AUTORUN, HIDE</pre>
 +
כאשר ''PATH_OF_MSACCESS_TO_MYSQL\EXECUTE.exe'' זה הנתיב לקובץ ההרצה של הכלי ''MS Access to MySQL'' (מוגדר בהתקנה של הכלי; בד"כ זה ימצא ב-''c:\program files'').
  
בשביל שיופיעו העותקים החדשים עם סטטוס מעודכן, נריץ סקריפט אוטומטי שייבא באופן אוטומטי פעם ביום את הטבלה copies מה-lib_data אל ה-mysql. מבצעים זאת בעזרת MS Access to MySQL.
+
{{תיבת שים לב|מגדירים אוטומציה של סקריפטים בחלונות במשימות מתוזמנות (Scheduled tasks) תחת לוח הבקרה.}}
 +
 
 +
== עדכון גיבוי ושרת מרכזי ==
 +
יש לעדכן בשרת library.org.il מספר דברים ע"מ שהטבלאות יעברו גם לשרת המרכזי ויגובו בהתאם. לשם כך יש לבצע את הפעולות הבאות.
 +
 
 +
=== עדכון hosts ===
 +
יש לעדכן את קובץ hosts בשרת library.org.il ולהוסיף לו את ה-host של הספריה שבה נמצא ה-mysql המרוחק:
 +
<highlightSyntax language="bash">x.x.x.x library_name-server
 +
</highlightSyntax>
 +
כאשר library_name אמור להיות ה-sub-domain של הספרייה ו-x.x.x.x אמור להיות ה-IP.
 +
 
 +
=== עדכון סקריפט גיבוי ===
 +
יש לעדכן את סקריפט הגיבוי ע"י עדכון הקובץ /usr/local/bin/backup_remote_mysql.sh. יש להוסיף את השורה הבאה:
 +
<highlightSyntax language="bash">/usr/local/bin/backup_remote_mysql_server.sh library_name-server library_name
 +
</highlightSyntax>
 +
כמו בשלב הקודם יש להחליף את library_name עם ה-sub-domain של הספריה.
  
 
== ראה גם ==
 
== ראה גם ==
 
* [[SQL]]
 
* [[SQL]]
 +
 
[[קטגוריה:אגרונט]]
 
[[קטגוריה:אגרונט]]
 +
[[קטגוריה:תחזוקה]]

גרסה אחרונה מ־17:21, 28 ביוני 2012

האגרונט החדש מסוגל לעבוד מול בסיס הנתונים של הלקוח וכך לאפשר לקוראים להאריך השאלות ולבצע הזמנות כותרים ישירות מול הספריה.

התקנת 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@library.org.il IDENTIFIED BY 'PASSWORD';</highlightSyntax>

שימו לב: יש לאפשר חיבור מהאגרונט (www.library.org.il) לשרת ה-mysql אצל הלקוח. לכן, יש לפתוח את פורט 3306 שמשמש את ה-mysql

לאחר מכן, נבדוק אם הגדרנו זאת כהלכה. נריץ את הפקודה הבאה משרת האגרונט: <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',

`LoanType` 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=InnoDB 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,

`LoanType` 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=InnoDB 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,

`SendLetter` tinyint(4) DEFAULT NULL, `SendSMS` tinyint(4) DEFAULT NULL, `SendSMS2` tinyint(4) DEFAULT NULL, `DateSend` datetime DEFAULT NULL, `DateReceived` datetime DEFAULT NULL, `IsReader` tinyint(4) DEFAULT NULL,

 PRIMARY KEY (`res_no`),
 UNIQUE KEY `reader_no_2` (`reader_no`,`title_no`,`By_copy`,`reserve_date`),
 KEY `title_no` (`title_no`),
 KEY `reader_no` (`reader_no`),
 KEY `reserve_date` (`reserve_date`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;</highlightSyntax>

שימו לב: ניתן להריץ את הפקודות גם מהלקוח וגם משרת האגרונט. האחרון בגלל ההרשאה שנתנו בהתחלה.
שימו לב: {{{1}}}

העברת המידע מהאקסס ל-mysql

עכשיו תוכל להעביר את ה-data אל הטבלאות מה-lib_data.mdb של הלקוח לטבלאות הנ"ל (מומלץ לעשות זאת אצל הלקוח). ניתן לעשות זאת באמצעות MS Access to MySQL. הכלי הינו gui וקל לתפעול.

אזהרה: יש להעביר את המידע מהטבלאות ולא את מבנה הטבלאות! את מבנה הטבלאות יצרנו כבר בשלב הקודם.

עדכון התוכנה אצל הלקוחות

עדכון התוכנה מתחלק ל-2 שלבים: עדכון ה-lib_data ועדכון ה-lib_appml.

אזהרה: יש לבצע גיבוי גם ל-lib_data וגם ל-lib_appml לפני שנמשיך.

lib_data

  1. כדי ליצור קישור מה-lib_data ל-mysql נצטרך להתקין MySQL ODBC. הורידו והתקינו את התוסף בשרת.
  2. ניצור DSN ל-mysql כדי שאקסס יוכל להתקשר ל-mysql. ניכנס ל-control panel ושם ל-administrative tools. נבחר ב-data sources (odbc). ניצור בכרטיסיית system DSN קישור לבסיס נתונים שיצרנו ב-mysql לעיל.
  3. נחזור ל-lib_data ונסיר את כל הקשרי גומלין של שלושת הטבלאות: loans, loans_history ו-reservations.
  4. נמחק את שלושת הטבלאות הנ"ל.
  5. נוסיף את שלושת הטבלאות של ה-mysql שיצרנו קודם ל-lib_data באמצעות הקישור של ה-odbc.
  6. ניצור מחדש את קשרי הגומלין של הטבלאות החדשות: הטבלה loans אמור להיות מקושרת ל-readers ו-copies; הטבלה reservations אמורה להיות מקושרת ל-readers ו-titles.
אזהרה: הטבלה loans_history אינה מקושרת לשום טבלה.

lib_appml

  1. נוסיף את קשרי הגומלין כפי שעשינו בחלק הקודם לשלושת הטבלאות החדשות.
  2. נסיר את שלושת הטבלאות הישנות.
שימו לב: שמות הטבלאות החדשות אמורות להיות באותו שם של הטבלאות הישנות.

יצירת טריגרים

ניצור טריגרים שיעזרו לנו ליצור 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>

שימו לב: לטריגר האחרון נצטרך לשנות את ה-delimeter (כפי שניתן לראות בפקודות).

הגדרת אגרונט

יש לבצע הגדרות במשתני הניהול של הספריה בתוך פאנל הניהול. יש להגדיר את המשתנים הבאים:

  • live_driver
  • live_database
  • live_user
  • live_password
  • live_prefix
  • אם יש שימוש בגירסת אגרון 10 יש להוסיף את המשתנה agron10 למשתני הניהול.
שימו לב: את הערכים יש לקחת לפי ההגדרות שביצענו קודם.

יצירת סקריפט יבוא

כרטיס הקורא מתבסס על ה-data של ה-mysql המרוחק (כלל הטבלאות שב-lib_data), לכן נצטרך להריץ סקריפט אוטומטי שייבא באופן אוטומטי פעם ביום את הטבלאות מה-lib_data של הספריה אל ה-mysql. מבצעים זאת בעזרת MS Access to MySQL. בעזרת הכלי הנ"ל נבצע את זה פעם אחת ולפני שנריץ נשמור את הגדרות היבוא (יש לחצן במסך האחרון לפני ההרצה) כדי ליצור סקריפט מהגדרות אלו.

נגדיר סקריפט בשרת שירוץ פעם ביום ויריץ את הפקודה הבאה:

"PATH_OF_MSACCESS_TO_MYSQL\EXECUTE.exe" SETTINGS="move_lib_data.ini", AUTORUN, HIDE

כאשר PATH_OF_MSACCESS_TO_MYSQL\EXECUTE.exe זה הנתיב לקובץ ההרצה של הכלי MS Access to MySQL (מוגדר בהתקנה של הכלי; בד"כ זה ימצא ב-c:\program files).

שימו לב: מגדירים אוטומציה של סקריפטים בחלונות במשימות מתוזמנות (Scheduled tasks) תחת לוח הבקרה.

עדכון גיבוי ושרת מרכזי

יש לעדכן בשרת library.org.il מספר דברים ע"מ שהטבלאות יעברו גם לשרת המרכזי ויגובו בהתאם. לשם כך יש לבצע את הפעולות הבאות.

עדכון hosts

יש לעדכן את קובץ hosts בשרת library.org.il ולהוסיף לו את ה-host של הספריה שבה נמצא ה-mysql המרוחק: <highlightSyntax language="bash">x.x.x.x library_name-server </highlightSyntax> כאשר library_name אמור להיות ה-sub-domain של הספרייה ו-x.x.x.x אמור להיות ה-IP.

עדכון סקריפט גיבוי

יש לעדכן את סקריפט הגיבוי ע"י עדכון הקובץ /usr/local/bin/backup_remote_mysql.sh. יש להוסיף את השורה הבאה: <highlightSyntax language="bash">/usr/local/bin/backup_remote_mysql_server.sh library_name-server library_name </highlightSyntax> כמו בשלב הקודם יש להחליף את library_name עם ה-sub-domain של הספריה.

ראה גם