今天看SQL的时候发现,MySQL删除了默认值后,再次插入值如果没有对应字段,将会提示出错:
1364 - Field ‘City’ doesn’t have a default value, Time: 0.000000s
看了一下很多大神的解答:
打开my.ini,查找
sql-mode=“STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
修改为
sql-mode=“NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
然后重启MYSQL
感觉这是从MySQL软件层面上去解决问题,太复杂了可操作性很低,最简单的方案就是把对应的字段重设一个默认值为NULL就好,虽然此问题并不治本,但是速度最快影响又小。
以下为演示的MySQL语句:
1、创建表
CREATE TABLE Persons
(
P_Id int NOT NULL auto_increment,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes',
PRIMARY KEY(P_Id)
)
2、删除City的DEFAULT
ALTER TABLE Persons
ALTER City DROP DEFAULT
3、插入语句
INSERT into Persons
(LastName,FirstName,Address)
VALUES
('hua','cao','guangdong')
4、报错
1364 - Field ‘City’ doesn’t have a default value, Time: 0.000000s
5、解决方案
ALTER TABLE Persons
ALTER city set DEFAULT(NULL)
6、此时再执行一次插入语句
INSERT into Persons
(LastName,FirstName,Address)
VALUES
('tao','hei','guangdong')
7、问题解决
Affected rows: 1, Time: 0.001000s