Mariadb 插入查询在本地数据库上执行,但不在服务器上执行

Mariadb 插入查询在本地数据库上执行,但不在服务器上执行,mariadb,Mariadb,我正面临一个奇怪的错误。我在本地mac(brew)上安装了5.5.5-10.1.20-MariaDB,在prod服务器(centos7)上安装了5.5.52-MariaDB。我的本地数据库内容是服务器数据库的副本。我已在本地执行了此查询: ## CREATE DIRECT RELATION BETWEEN JOURNAL AND PUBLICATION INSERT INTO journal_publication (journal_id, `publication_id`) ( select

我正面临一个奇怪的错误。我在本地mac(brew)上安装了5.5.5-10.1.20-MariaDB,在prod服务器(centos7)上安装了5.5.52-MariaDB。我的本地数据库内容是服务器数据库的副本。我已在本地执行了此查询:

## CREATE DIRECT RELATION BETWEEN JOURNAL AND PUBLICATION
INSERT INTO journal_publication (journal_id, `publication_id`) (
select issues.journal_id as journal_id, publications.id as publication_id from issues
join publications on issues.id = publications.`issue_id`
where publications.id Not In (select distinct publication_id from journal_publication)
);
它工作正常,只需不到一秒钟的时间即可执行。 现在,当我在prod服务器上尝试完全相同的查询时,查询永远不会结束,并且占用所有CPU。此外,我试图解释这个查询,它在我的本地计算机上运行良好:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   PRIMARY issues  index   PRIMARY issues_journal_id_foreign   5   NULL    70993   Using index; Using temporary
1   PRIMARY publications    ref publications_issue_id_foreign   publications_issue_id_foreign   5   pubpeer.issues.id   1   Using where; Using index
2   MATERIALIZED    journal_publication index   NULL    PRIMARY 8   NULL    143926  Using index
而我的产品上的同一查询返回一个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO journal_publication (journal_id, `publication_id`) 
(select issues.j' at line 2
同样,两个数据库的内容相同,主键和索引设置相同。作为记录,当我尝试并执行此查询时:

select issues.journal_id as journal_id, publications.id as publication_id from issues
join publications on issues.id = publications.`issue_id`
where publications.id Not In (select distinct publication_id from journal_publication;
在本地或prod上只需一秒钟

你有什么线索或流程可以帮助我理解这些差异吗

谢谢

泽维尔
  • MariaDB服务器版本<10.0仅支持
    EXPLAIN SELECT

  • MariaDB服务器版本>=10.0额外支持
    解释
    更新
    解释插入
    解释删除

  • 请注意,版本字符串5.5.5-10.1.20-MariaDB表示MariaDB 10.1.20,由于MySQL复制将中断,因此需要5.5.5前缀,因为它只支持主版本的1位数字


    另请参见

    错误消息,该消息指出插入之前的某个内容导致了故障。检查空白处是否有在一个操作系统上工作但在另一个操作系统上发出嘎嘎声的内容。