通过phpmyadmin,NextJS Mysql可以正常运行,但通过api查询时出现问题
P粉549986089
P粉549986089 2023-08-26 16:01:12
[MySQL讨论组]
<p>如标题所说,我的SQL代码在phpmyadmin中可以工作,但在从API请求时却不行。 我的API使用mysql包:</p> <pre class="brush:php;toolbar:false;">npm i mysql</pre> <p>SQL代码:</p> <pre class="brush:php;toolbar:false;">BEGIN; INSERT INTO Addresses (address, postal_code, city, state, country) VALUES('Something', 69420, 'Something', 'Something', 'Something'); SELECT LAST_INSERT_ID() INTO @mysql_address_id; INSERT INTO Companies (owner, org_nr, name) VALUES('someid', 133769420, 'Something'); SELECT LAST_INSERT_ID() INTO @mysql_company_id; INSERT INTO Users (company, member, administrator) VALUES(@mysql_company_id, 'someid', 1); INSERT INTO CompanyDetails (shippingAddress, company, shortName, ourReference) VALUES(@mysql_address_id, @mysql_company_id, 'Something', 'Something'); COMMIT;</pre> <p>在phpmyadmin中这完全正常。</p> <p>我使用以下方式调用函数:</p> <pre class="brush:php;toolbar:false;">db.query( `BEGIN; INSERT INTO Addresses (address, postal_code, city, state, country) VALUES('Something', 69420, 'Something', 'Something', 'Something'); SELECT LAST_INSERT_ID() INTO @mysql_address_id; INSERT INTO Companies (owner, org_nr, name) VALUES('Something', 133769420, 'Something'); SELECT LAST_INSERT_ID() INTO @mysql_company_id; INSERT INTO Users (company, member, administrator) VALUES(@mysql_company_id, 'someid', 1); INSERT INTO CompanyDetails (shippingAddress, company, shortName, ourReference) VALUES(@mysql_address_id, @mysql_company_id, 'Something', 'Something'); COMMIT;`, (err, result) =&gt; { if (err) return res.status(422).json(err); return res.status(200).json(result); } );</pre> <p>显示的错误是:</p> <pre class="brush:php;toolbar:false;">{&quot;code&quot;:&quot;ER_PARSE_ERROR&quot;,&quot;errno&quot;:1064,&quot;sqlMessage&quot;:&quot;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 Addresses (address, postal_code, city, state, country) VALUES('Ve...' at line 1&quot;,&quot;sqlState&quot;:&quot;42000&quot;,&quot;index&quot;:0,&quot;sql&quot;:&quot;BEGIN; INSERT INTO Addresses (address, postal_code, city, state, country) VALUES('Something', 69420, 'Something', 'Something', 'Something'); SELECT LAST_INSERT_ID() INTO @mysql_address_id; INSERT INTO Companies (owner, org_nr, name) VALUES('someid', 133769420, 'Something'); SELECT LAST_INSERT_ID() INTO @mysql_company_id; INSERT INTO Users (company, member, administrator) VALUES(@mysql_company_id, 'someid', 1); INSERT INTO CompanyDetails (shippingAddress, company, shortName, ourReference) VALUES(@mysql_address_id, @mysql_company_id, 'Something', 'Something'); COMMIT;&quot;}</pre> <p>有人知道这可能是什么原因引起的吗?任何帮助将不胜感激 :)</p>
P粉549986089
P粉549986089

全部回复(1)
P粉037450467

我在这里找到了解决方案:https://stackoverflow.com/a/23267627/13214923 原来node-mysql默认不支持多个语句。

通过添加

{multipleStatements: true,}

到我的连接池配置中,它就像魔术般地工作了 :)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号