我正在尝试将.csv文件中的某些条目导入到我的实际数据库中。我做了这一千遍没有任何问题。从昨天开始,我再也无法导入它了。
我总是收到这个错误:
Error Number: 1242
Subquery returns more than 1 row
UPDATE preturi_import I SET I.art_id = ( SELECT ART_ID FROM tof_articles WHERE I.art_nr = ART_ARTICLE_NR AND I.sup_id = ART_SUP_ID ) WHERE I.sup_id > 0
Filename: /home/pieseaut/public_html/controllers/backend.php
Line Number: 1647
由于脚本工作正常,直到昨天我还没有对脚本进行任何修改,我真的无法理解问题所在。
确切的mysql查询如下:
$sqlUpdate = "UPDATE preturi_import I SET I.art_id = (SELECT ART_ID FROM tof_articles WHERE I.art_nr = ART_ARTICLE_NR AND I.sup_id = ART_SUP_ID) WHERE I.sup_id > 0";
无论是.csv文件是单个条目还是几十个或几百个或几千个,我总是得到与开头提到的相同的错误。
但有一个问题。由于某些愚蠢的原因,我的CentOS服务器上的/ tmp分区已满,一些mysql表崩溃了。我使用mysqlcheck和--repair选项来修复它们以及myisamchk。我已经重新启动了mysql服务,我发现这些表没有错误。
任何帮助都是真正的帮助!
答案 0 :(得分:2)
错误非常明确:您的SELECT ART_ID FROM tof_articles WHERE I.art_nr = ART_ARTICLE_NR AND I.sup_id = ART_SUP_ID
查询会为至少一个CSV行返回多个结果。
我建议在您执行查询之前回显CSV行,当错误发生时,您将知道该行是否导致问题。当你得到它,检查你的数据库。