Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP/MySQL एप्लिकेशन के लिए माइग्रेशन (स्कीमा और डेटा) को स्वचालित कैसे करें

मेरे पास "स्कीमा" ऑब्जेक्ट है जिसका मैं उपयोग करता हूं - लेकिन आप कक्षाओं के बिना भी ऐसा कर सकते हैं ..

आप जो करना चाहते हैं वह एक 'db_schema_versions बनाना है ' टेबल:

CREATE TABLE db_schema_versions (
  `table` varchar(255) NOT NULL PRIMARY KEY, 
  `version` INT NOT NULL
)

आपका डेटाबेस ट्रैक कर सकता है कि कौन सा संस्करण # चालू है - यह स्वचालित रूप से SQL अपग्रेड कर सकता है।

स्कीमा को अपग्रेड करते समय आपको अपनी स्कीमा तालिका को लॉक कर देना चाहिए। इस तरह आपके पास अपनी स्कीमा को अपग्रेड करने का प्रयास करते हुए एक ही समय में दो अनुरोध नहीं होंगे।

इसलिए - जिस संस्करण से आप अपग्रेड कर रहे हैं उसका ट्रैक रखें - एक बड़ा स्विच बनाएं - कुछ इस तरह:

class SNTrack_Db_Schema extends MW_Db_Schema_Abstract {
  protected $table = "sntrack_db_schema";
  protected $version = 5;

  protected function upgrade($fromVersion) {
    // don't break
    switch($fromVersion) {
      case 0:
        $this->db->query('CREATE TABLE sntrack_inbound_shipment (
            `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
            `from` VARCHAR(255) NOT NULL,
            `date` DATE NOT NULL,
            `invoice` VARCHAR(255) NOT NULL,
            `notes` TEXT
          )');
        $this->setVersion(1);
      case 1:
        $this->db->query('ALTER TABLE sntrack_details ADD `shipment_id` INT');
        $this->db->query('ALTER TABLE sntrack_product ADD `inventory` INT NOT NULL DEFAULT 0');
        $this->db->query('CREATE TABLE sntrack_inventory_shipment (
            `shipment_id` INT NOT NULL,
            `product_id` INT NOT NULL,
            `qty` INT NOT NULL,
            PRIMARY KEY (`shipment_id`, `product_id`)
          )');
        $this->setVersion(2);
...etc


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel वाक्पटु क्वेरी JSON कॉलम कहाँ में है?

  2. एकाधिक तालिका चयन बनाम जॉइन (प्रदर्शन)

  3. mysql में संग्रहीत डेटा को संस्करण कैसे नियंत्रित करें

  4. MySQL में डेटाबेस कैसे बनाएं

  5. पहले ड्रॉपडाउन चयन के आधार पर HTML/PHP ड्रॉपडाउन को पॉप्युलेट करें