1.Can't create table 'XXX' (errno: 150)
原因:
在MySQL里创建外键时(Alter table xxx add constraint fk_xxx foreign key),提示错误,产生这种错误的主要原因是两个关联表中关联字段的属性不一致,例如试图在A表与B表之间通过A.a字段关联,但是在B表中的a字段与A表中的a字段不同(类型不同,长度不同等)
解决办法:
更改数据库使一致
2.You can't specify target table 'table_sync_record' for update in FROM clause
当执行以下语句时,出现了以上错误:
DELETE FROM table_sync_record WHERE ID NOT IN (SELECT MIN(ID) FROM table_sync_record GROUP BY file_name)
上面语句的意思是:删除表中重复数据,保留重复数据最小的ID信息
原因是:mysql中不允许更新,作为数据来源的表
解决办法:
将搜索结果存入中间表中,然后执行
CREATE TABLE tmp AS SELECT MIN(id) AS col1 FROM table_sync_record GROUP BY file_name;
DELETE FROM table_sync_record WHERE id NOT IN (SELECT col1 FROM tmp);
DROP TABLE tmp;