上次错误
This commit is contained in:
+4
-9
@@ -9,8 +9,7 @@ CREATE TABLE IF NOT EXISTS `categories` (
|
||||
`description` TEXT,
|
||||
`sort_order` INT DEFAULT 0,
|
||||
`status` TINYINT DEFAULT 1,
|
||||
`layout` TEXT,
|
||||
`mode` VARCHAR(16) NOT NULL DEFAULT 'fixed'
|
||||
`layout` TEXT
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `products` (
|
||||
@@ -28,8 +27,7 @@ CREATE TABLE IF NOT EXISTS `products` (
|
||||
`sort_order` INT DEFAULT 0,
|
||||
`status` TINYINT DEFAULT 1,
|
||||
`created_at` VARCHAR(20) DEFAULT '',
|
||||
`layout` TEXT,
|
||||
`mode` VARCHAR(16) NOT NULL DEFAULT 'fixed'
|
||||
`layout` TEXT
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `news` (
|
||||
@@ -43,8 +41,7 @@ CREATE TABLE IF NOT EXISTS `news` (
|
||||
`published_at` VARCHAR(20) DEFAULT '',
|
||||
`status` TINYINT DEFAULT 1,
|
||||
`views` INT DEFAULT 0,
|
||||
`layout` TEXT,
|
||||
`mode` VARCHAR(16) NOT NULL DEFAULT 'fixed'
|
||||
`layout` TEXT
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `cases` (
|
||||
@@ -60,8 +57,7 @@ CREATE TABLE IF NOT EXISTS `cases` (
|
||||
`sort_order` INT DEFAULT 0,
|
||||
`status` TINYINT DEFAULT 1,
|
||||
`views` INT DEFAULT 0,
|
||||
`layout` TEXT,
|
||||
`mode` VARCHAR(16) NOT NULL DEFAULT 'fixed'
|
||||
`layout` TEXT
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `pages` (
|
||||
@@ -70,7 +66,6 @@ CREATE TABLE IF NOT EXISTS `pages` (
|
||||
`title` VARCHAR(200) DEFAULT '',
|
||||
`content` TEXT,
|
||||
`layout` TEXT,
|
||||
`mode` VARCHAR(16) NOT NULL DEFAULT 'fixed',
|
||||
`updated_at` VARCHAR(20) DEFAULT ''
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
|
||||
@@ -18,16 +18,9 @@
|
||||
--------
|
||||
1. 仅放 DDL / DML 的标准 MySQL 脚本;多条语句以分号(;)分隔,自动拆分执行。
|
||||
2. 优先使用「幂等写法」,避免重复执行报错,例如:
|
||||
CREATE TABLE IF NOT EXISTS xxx (...); -- 全版本支持
|
||||
INSERT INTO ... ON DUPLICATE KEY UPDATE ...; -- 全版本支持
|
||||
注意:ALTER TABLE ... ADD COLUMN IF NOT EXISTS 仅 MySQL 8.0.28+ / MariaDB 10.8+ 支持,
|
||||
旧版本(含多数宝塔默认的 MySQL 5.7 与 MariaDB 10.4/10.6)会直接报 1064 语法错误。
|
||||
跨版本安全的「加列」幂等方式(强烈推荐):
|
||||
SET @db = DATABASE();
|
||||
SET @has = (SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA=@db AND TABLE_NAME='yyy' AND COLUMN_NAME='zzz');
|
||||
SET @sql = IF(@has=0, 'ALTER TABLE `yyy` ADD COLUMN `zzz` VARCHAR(16) NOT NULL DEFAULT \'x\'', 'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
CREATE TABLE IF NOT EXISTS xxx (...);
|
||||
ALTER TABLE yyy ADD COLUMN IF NOT EXISTS zzz ...; -- MySQL 8.0.28+
|
||||
INSERT INTO ... ON DUPLICATE KEY UPDATE ...;
|
||||
3. 不建议在升级包中执行 DROP TABLE / TRUNCATE 等破坏性语句,除非确有必要。
|
||||
4. 升级前请务必备份数据库。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user