我被建议这样做
SELECT table_schema, table_name FROM information_schema.tables
WHERE table_schema = 'mydb' AND table_name='ApprovePost';
然而,它不可靠且cause me errors on several versions of mysql on windows and linux。
也许有另一种方式。有谁知道吗?
这个问题是我可以创建表,如果不存在,但我做第二遍以添加FK约束。在我的SQL转储中,我看到> 130包含在一个表上。该表只有6列,其中只有两列需要约束。每次重新启动Apache服务器时,或者当mono认为需要在我的webapp中调用我的全局init方法时,约束会继续构建和构建。
答案 0 :(得分:2)
答案 1 :(得分:0)
如果您现在唯一的实际问题是不断重新创建外键(除了考虑到其他问题可能会破坏MySQL安装),为什么不呢:
1)给它一个约束符号(在数据库中应该是唯一的)并让添加失败静默/ catch'em?
ALTER TABLE tbl ADD CONSTRAINT only_one_please FOREIGN KEY (columnname) ...
2)或者更好的是,首先在create table
中添加外键条款?
至于最初的问题:我不知道为什么会发生这种情况,我无法再创造它。从information_schema中选择是非常优选的检查方式,并且还没有让我失望。除了SELECT * FROM tablename LIMIT 0;
之类的强力检查并检查错误之外,您首先可能需要检查除MySQL查询缓存之外的任何其他缓存机制,如果它们不存在/没有问题,也许请尝试{{ 1}}。