Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql-无法添加外键约束_Mysql_Foreign Keys_Constraints_Database Indexes - Fatal编程技术网

MySql-无法添加外键约束

MySql-无法添加外键约束,mysql,foreign-keys,constraints,database-indexes,Mysql,Foreign Keys,Constraints,Database Indexes,我有两个表:用户和用户会话数据 及 在某个时候,有人创建了用户会话数据的副本,比如说用户会话数据副本,修复了其中一些不正确的数据,然后重命名了表: 用户会话数据>用户会话数据\u原始 用户会话数据复制>用户会话数据 因此,所有约束都与原始表保持链接 现在,我必须解决这个问题,所以我删除了原始表上的约束,ant试图将它们添加到新表上。除了上面表结构中突出显示的约束之外,其他一些表的所有约束都已成功创建。只是不会 这些表有数百万条记录,因此查询运行大约10分钟。我只能访问phpMyAdmin接口,在

我有两个表:用户和用户会话数据

在某个时候,有人创建了用户会话数据的副本,比如说用户会话数据副本,修复了其中一些不正确的数据,然后重命名了表:

用户会话数据>用户会话数据\u原始

用户会话数据复制>用户会话数据

因此,所有约束都与原始表保持链接

现在,我必须解决这个问题,所以我删除了原始表上的约束,ant试图将它们添加到新表上。除了上面表结构中突出显示的约束之外,其他一些表的所有约束都已成功创建。只是不会

这些表有数百万条记录,因此查询运行大约10分钟。我只能访问phpMyAdmin接口,在运行查询5分钟后,它告诉我2006-MySQL服务器已经消失了。但是,在重新创建其他约束时也会发生这种情况,它们工作得很好。运行显示完整进程列表;显示查询正在后台运行

无论如何,当它完成查询时,查询从进程列表中消失,约束就不存在了。MySql通用日志已被禁用,我没有权限启用它,以查看我是否在某个时候遇到了一些错误

我尝试在原始表上添加约束,因为原始表记录较少,而且效果很好

我还尝试通过运行一些空SQL来重建索引,重新创建表,正如MySql文档所建议的:

ALTER TABLE user_session_data ENGINE = InnoDB;
ALTER TABLE user ENGINE = InnoDB;
但仍然没有成功

我还有其他选择吗


谢谢大家!

请检查您的数据是否一致

Select count (*) from user_session_data     where user_id not in (select ID from user_data)

如果得到任何结果,请从用户会话数据中删除错误的数据,然后重试

你有没有检查数据是否一致?也许你有一些用户id,但这些id已经不在用户中了?比如:`sleforry,在手机上编辑我的评论太愚蠢了:-从用户会话数据中选择count*,其中用户id不在从用户会话数据中选择id Yeap!我想就是这个了我会清理这些id,并让你知道这一次是否有效,所以你会发布一个答案。谢谢一切都好!请把答案贴出来,这样我就可以接受了。非常感谢!
ALTER TABLE user_session_data ENGINE = InnoDB;
ALTER TABLE user ENGINE = InnoDB;
Select count (*) from user_session_data     where user_id not in (select ID from user_data)