禁用严格模式后无法执行 SQL 文件事件
Can't Execute SQL File Event After Disabling Strict Mode
我正在使用 Ubuntu 18.04 和 Mysql,我正试图删除这个 SQL 文件:
CREATE TABLE IF NOT EXISTS `ammunition`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`owner` text DEFAULT NULL,
`original_owner` text NOT NULL,
`hash` text NOT NULL,
`weapon_id` char(60) NOT NULL,
`count` int(11) NOT NULL DEFAULT 0,
`attach` text NOT NULL DEFAULT '[]',
PRIMARY KEY (`id`),
UNIQUE KEY `weapon_id` (`weapon_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;
我不断收到此错误:
SQL ERROR (1101): BLOB, TEXT, GEOMETRY or JSON column attach
can't have a default value
我试过解决它,但我能找到的唯一建议是禁用严格模式。
我永久禁用了它:
[mysqld]
sql_mode=""
然后重新启动 mysql 服务。
不重启的临时方式:
set global sql_mode='';
但是,我仍然收到错误消息。我做错了什么?
当您阅读错误消息时,您会看到 TEXT..column attach can't have a default value
。
要更正此问题,请不要在此处放置默认值。
如果您确实需要默认值,请使用 VARCHAR
列。
禁用sql严格模式是最糟糕的事情。以后会给你惹麻烦的。
我正在使用 Ubuntu 18.04 和 Mysql,我正试图删除这个 SQL 文件:
CREATE TABLE IF NOT EXISTS `ammunition`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`owner` text DEFAULT NULL,
`original_owner` text NOT NULL,
`hash` text NOT NULL,
`weapon_id` char(60) NOT NULL,
`count` int(11) NOT NULL DEFAULT 0,
`attach` text NOT NULL DEFAULT '[]',
PRIMARY KEY (`id`),
UNIQUE KEY `weapon_id` (`weapon_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;
我不断收到此错误:
SQL ERROR (1101): BLOB, TEXT, GEOMETRY or JSON column
attach
can't have a default value
我试过解决它,但我能找到的唯一建议是禁用严格模式。
我永久禁用了它:
[mysqld]
sql_mode=""
然后重新启动 mysql 服务。
不重启的临时方式:
set global sql_mode='';
但是,我仍然收到错误消息。我做错了什么?
当您阅读错误消息时,您会看到 TEXT..column attach can't have a default value
。
要更正此问题,请不要在此处放置默认值。
如果您确实需要默认值,请使用 VARCHAR
列。
禁用sql严格模式是最糟糕的事情。以后会给你惹麻烦的。