当前位置: 首页 > 知识库问答 >
问题:

Delphi XE10.x FireDAC-查询过程中与MySQL服务器的连接丢失错误

闾丘卓
2023-03-14

我使用以下代码构建这个简单的查询:

FDQuery1.SQL.Text := 'INSERT INTO album SET customer_id=' + Chr(39) + IntToStr(CustomerID) + Chr(39) + ',lab_id=' + Chr(39) + IntToStr(LabID) + Chr(39) +
        ', album_name_c = ' + Chr(39) + ProjectFolderName + Chr(39) +
        ', album_name_s = ' + Chr(39) + ProjectFolderNameOnServer + Chr(39) +
        ' ,album_size=' + Chr(39) + txtAlbumSize.Text + Chr(39) +
        ', album_paper=' + Chr(39) + txtPaperFinish.Text + Chr(39) +
        ', album_cover=' + Chr(39) + txtCover.Text + Chr(39) +
        ', album_binding=' + Chr(39) + txtBinding.Text + Chr(39) +
        ', album_coating=' + Chr(39) + txtCoating.Text + Chr(39) +
        ', starts_from=' + Chr(39) + BoolToStr(chkRight.Checked) + Chr(39) +
        '; SELECT LAST_INSERT_ID() AS RecID;';

但是当我调用fdQuery1.OpenOrexecute时,我会得到错误消息,正如本文主题中所述。

TIA

杨瑜伽士

共有1个答案

狄峰
2023-03-14

好的,最后我找到了实际的问题并解决了它...

碰巧的是,哑FireDAC的查询组件不支持原始帖子中所述格式的查询。我必须按照SQL规范构建传统的插入查询。

虽然MySQL支持使用SET关键字的查询,而且我一直在PHP项目中使用它,所以不存在查询错误的问题。

FDQuery1.SQL.Text := 'INSERT INTO album(customer_id, album_name_c, album_name_s, album_size, album_paper, album_cover, album_binding, album_coating, starts_from, total_files, lab_id, upload_date, album_uploaded) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?);';

        FDQuery1.Params.Items[0].AsInteger := CustomerID;
        FDQuery1.Params.Items[1].AsString := ProjectFolderName;
        FDQuery1.Params.Items[2].AsString := ProjectFolderNameOnServer;
        FDQuery1.Params.Items[3].AsString := AlbumSize;
        FDQuery1.Params.Items[4].AsString := PaperFinish;
        FDQuery1.Params.Items[5].AsString := Cover;
        FDQuery1.Params.Items[6].AsString := Binding;
        FDQuery1.Params.Items[7].AsString := Coating;

        if chkLeft.Checked then
          FDQuery1.Params.Items[8].AsString := '1'
        else
          FDQuery1.Params.Items[8].AsString := '0';

        if chkRight.Checked then
          FDQuery1.Params.Items[8].AsString := '2'
        else
          FDQuery1.Params.Items[8].AsString := '0';

        FDQuery1.Params.Items[9].AsInteger := lstFiles.Count;
        FDQuery1.Params.Items[10].AsInteger := LabID;
        FDQuery1.Params.Items[11].AsDate := Now;
        FDQuery1.Params.Items[12].AsString := '1';

        FDQuery1.Execute;

杨瑜伽士

 类似资料:
  • 当我运行大型查询(返回许多行的查询)时,我会得到期间失去与MySQL server的连接的错误,而且我看不出我做错了什么。我使用来自mysql.com的“新”mysql驱动程序(而不是“旧”的MySQLdb),以及与mamp捆绑在一起的mysql版本。Python 2.7。表未损坏,返回状态OK。下面是一个中断的例子: 这导致了我大部分时间得到的错误: 第20行是 PS:我暂时放弃了这一点,改为P

  • 问题内容: 我收到 错误代码:2013。 当我尝试使用MySQL Workbench向表中添加索引时, 在查询 错误 期间失去了与MySQL服务器的连接 。我还注意到,只要我运行长时间查询,它就会出现。 是否有增加超时值的方法? 问题答案: 新版本的MySQL WorkBench具有更改特定超时的选项。 对我来说,它位于编辑→首选项→SQL编辑器→DBMS连接读取超时(以秒为单位):600 将值更

  • 问题内容: 当我使用节点mysql时,在12:00到2:00之间出现错误,表明服务器已关闭TCP连接。这是完整的消息: 有解决办法。但是,以这种方式尝试后,问题也会出现。现在我不知道该怎么办。有人遇到这个问题吗? 这是我按照解决方案编写的方式: 问题答案: 尝试使用以下代码来处理服务器断开连接: 在您的代码中,我错过了之后的部分

  • 问题内容: 我收到 错误代码:2013。 当我尝试使用MySQL Workbench向表中添加索引时, 在查询 错误 期间丢失了与MySQL服务器的连接 。我还注意到,只要我运行长时间查询,它就会出现。 是否有增加超时值的方法? 问题答案: 新版本的MySQL WorkBench具有更改特定超时的选项。 对我来说,它位于编辑Preferences首选项SQL SQL编辑器DB DBMS连接读取超时

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 查询期间失去与MySQL服务器的连接 我正在将一些数据从大型csv导入mysql表。在将文件导入到表的过程中,我丢失了与服务器的连接。 怎么了? 错误代码为2013:在查询过程中失去与mySql服务器的连接。 我正在从Windows服务器上的ubuntu机器远程运行这些查询。 问题答案: 我发现此问题的最简单解决方案是将MySq

  • 平台:MySQL Workbench 8.0 CESQL:5.5.57 我在存储过程上遇到了一些问题。当我调用存储过程时,我总是得到同样的错误2013失去连接。 我尝试过的事情: 增加 DBMS 连接读取超时间隔(60 - 6000 秒):错误代码: 2013年。查询期间查询期间与MySQL服务器的连接丢失 为我的表编制索引 将光标限制为 在五次迭代后退出循环,