Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tự động hóa quá trình di chuyển (lược đồ và dữ liệu) cho ứng dụng PHP / MySQL

Tôi có một đối tượng "Lược đồ" mà tôi sử dụng - nhưng bạn có thể làm điều tương tự mà không cần các lớp ..

Những gì bạn muốn làm là tạo một 'db_schema_versions 'bảng:

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

Sau khi cơ sở dữ liệu của bạn có thể theo dõi phiên bản # nào - nó có thể tự động nâng cấp SQL.

Bạn nên khóa bảng giản đồ của mình trong khi nâng cấp giản đồ. Bằng cách này, bạn sẽ không có hai yêu cầu cùng lúc khi cố gắng nâng cấp giản đồ của mình.

Vì vậy - theo dõi phiên bản bạn đang nâng cấp - xây dựng một công tắc lớn - những thứ như sau:

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. Xóa các hàng sql trong đó ID không khớp với bảng khác

  2. Làm thế nào để chọn sum -or- 0 nếu không có bản ghi nào tồn tại?

  3. Giới thiệu về Chỉ mục SQL

  4. cách ngăn cơ sở dữ liệu thêm dấu gạch chéo vào dấu ngoặc kép

  5. Làm cách nào để bạn chuyển đổi bảng cha-con (kề) thành một tập hợp lồng nhau bằng PHP và MySQL?