上次错误
This commit is contained in:
@@ -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