1.alter ignore table 添加unique key不生效的问题
可参考链接
http://guduwhuzhe.iteye.com/blog/17625932.update语句在语法不规范的情况下不报错,并且更新了一个错误的值。
mysql版本是官方的5.5.24
先看表结构
CREATE TABLE `test` (
`id` int(11) DEFAULT NULL,
`text` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
再看下实际执行的结果:
-
root@localhost 16:57: sbtest> select * from test;
-
+------+-------+
-
| id | text |
-
+------+-------+
-
| 1 | ceshi |
-
+------+-------+
-
1 row in set (0.00 sec)
-
-
root@localhost 16:57: sbtest> update test set id=2 and text='fail';
-
Query OK, 1 row affected (0.00 sec)
-
Rows matched: 1 Changed: 1 Warnings: 0
-
-
root@localhost 16:57: sbtest> select * from test;
-
+------+-------+
-
| id | text |
-
+------+-------+
-
| 0 | ceshi |
-
+------+-------+
-
1 row in set (0.00 sec)
此类的update set里面包含“and”错误语法的,在oracle数据库测试时直接报错。mysql无报错,并update了一个错误的值。
表结构如下
CREATE TABLE `user` (
`name` varchar(128) NOT NULL,
`created` int(10) DEFAULT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
先在从库insert一条数据
insert into user values('test5',123);
再在主库上执行此语句
insert into user values('test5',456);
同步没报1062的错误,从库的created字段还是123,没有被主库的覆盖。
表结构如下
CREATE TABLE `user` (
`name` varchar(128) NOT NULL,
`created` int(10) DEFAULT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
先在从库insert一条数据
insert into user values('test5',123);
再在主库上执行此语句
insert into user values('test5',456);
同步没报1062的错误,从库的created字段还是123,没有被主库的覆盖。
表结构如下
CREATE TABLE `user` (
`name` varchar(128) NOT NULL,
`created` int(10) DEFAULT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
先在从库insert一条数据
insert into user values('test5',123);
再在主库上执行此语句
insert into user values('test5',456);
同步没报1062的错误,从库的created字段还是123,没有被主库的覆盖。