ホームページ  >  に質問  >  本文

NextJS Mysql は phpmyadmin 経由で正常に動作しますが、API 経由でのクエリに問題があります

<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 住所 (住所、郵便番号、都市、州、国) VALUES('何か', 69420, '何か', '何か', '何か'); SELECT LAST_INSERT_ID() INTO @mysql_address_id; INSERT INTO Companies (所有者、組織番号、名前) VALUES('someid', 133769420, '何か'); SELECT LAST_INSERT_ID() INTO @mysql_company_id; INSERT INTO ユーザー (会社、メンバー、管理者) VALUES(@mysql_company_id, 'someid', 1); CompanyDetails (shippingAddress、company、shortName、ourReference) に挿入します。 VALUES(@mysql_address_id, @mysql_company_id, '何か', '何か'); COMMIT;</pre> <p>これは phpmyadmin ではまったく正常です。</p> <p>私たちは次の方法を使用します调用関数:</p> <pre class="ブラシ:php;ツールバー:false;">db.query( 「始めてください。」 INSERT INTO 住所 (住所、郵便番号、都市、州、国) 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 ユーザー (会社、メンバー、管理者) VALUES(@mysql_company_id, 'someid', 1); INSERT INTO CompanyDetails (shippingAddress, company, shortName, ourReference) VALUES(@mysql_address_id, @mysql_company_id, 'Something', 'Something');コミット;`, (エラー、結果) => { if (err) は res.status(422).json(err) を返します。 res.status(200).json(結果)を返します。 } );</pre> <p>表示される警告は次のとおりです:</p> <pre class="brush:php;toolbar:false;">{"code":"ER_PARSE_ERROR"、"errno":1064、"sqlMessage":"SQL 構文にエラーがあります; MariaDB サーバーのバージョンに対応するマニュアルで、「INSERT INTO Addresses (address, postal_code, city, state, country) VALUES('Ve...' at line 1'」、「sqlState」の近くで使用する正しい構文を確認してください。 "42000","index":0,"sql":"BEGIN; INSERT INTO 住所 (住所、郵便番号、市、州、国) 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 ユーザー (会社) 、メンバー、管理者) 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>これが原因である可能性があることを知っていますか?何か助けがあれば、興奮しないようにしてください:)</p>
P粉549986089P粉549986089420日前394

全員に返信(1)返信します

  • P粉037450467

    P粉0374504672023-08-27 10:14:45

    ここで解決策を見つけました: https://stackoverflow.com/a/23267627/13214923 node-mysql はデフォルトでは複数のステートメントをサポートしていないことがわかりました。

    を追加することで

    リーリー

    接続プール構成に追加すると、魔法のように機能しました :)

    返事
    0
  • キャンセル返事