Maison  >  Questions et réponses  >  le corps du texte

NextJS Mysql fonctionne correctement via phpmyadmin mais rencontre des problèmes d'interrogation via l'API

<p>Comme le titre l'indique, mon code SQL fonctionne dans phpmyadmin mais pas lors d'une requête depuis l'API. Mon API utilise le package mysql : </p> <pre class="brush:php;toolbar:false;">npm dans mysql</pre> <p>Code SQL :</p> <pre class="brush:php;toolbar:false;">BEGIN; INSERT INTO Adresses (adresse, code_postal, ville, état, pays) VALUES('Quelque chose', 69420, 'Quelque chose', 'Quelque chose', 'Quelque chose'); SELECT LAST_INSERT_ID() INTO @mysql_address_id ; INSERT INTO Entreprises (propriétaire, org_nr, nom) VALUES('quelque chose', 133769420, 'Quelque chose'); SELECT LAST_INSERT_ID() INTO @mysql_company_id ; INSERT INTO Utilisateurs (entreprise, membre, administrateur) VALEURS (@mysql_company_id, 'someid', 1); INSERT INTO CompanyDetails (shippingAddress, company, shortName, ourReference) VALEURS (@mysql_address_id, @mysql_company_id, 'Quelque chose', 'Quelque chose'); COMMIT;</pré> <p>C'est tout à fait normal dans phpmyadmin.</p> <p>我使用以下方式调用函数:</p> <pre class="brush:php;toolbar:false;">db.query( ` COMMENCER ; INSERT INTO Adresses (adresse, code_postal, ville, état, pays) VALUES('Quelque chose', 69420, 'Quelque chose', 'Quelque chose', 'Quelque chose'); SELECT LAST_INSERT_ID() INTO @mysql_address_id ; INSERT INTO Companies (propriétaire, org_nr, nom) VALUES('Quelque chose', 133769420, 'Quelque chose'); SELECT LAST_INSERT_ID() INTO @mysql_company_id ; INSERT INTO Utilisateurs (entreprise, membre, administrateur) VALUES (@mysql_company_id, 'someid', 1); INSERT INTO CompanyDetails (shippingAddress, company, shortName, ourReference) VALUES (@mysql_address_id, @mysql_company_id, 'Something', 'Something'); ENGAGER ;`, (erreur, résultat) => { if (err) return res.status(422).json(err); return res.status(200).json(result); } );</pré> <p>显示的错误是:</p> <pre class="brush:php;toolbar:false;">{"code":"ER_PARSE_ERROR","errno":1064,"sqlMessage":"Vous avez une erreur dans votre syntaxe SQL ; consultez le manuel qui correspond à la version de votre serveur MariaDB pour connaître la bonne syntaxe à utiliser près de 'INSERT INTO Addresses (address, postal_code, city, state, country) VALUES('Ve...' at line 1","sqlState" : "42000", "index": 0, "sql": "BEGIN; INSERT INTO Adresses (adresse, code_postal, ville, état, pays) VALUES ('Quelque chose', 69420, 'Quelque chose', 'Quelque chose' , 'Quelque chose'); SELECT LAST_INSERT_ID() INTO @mysql_address_id; INSERT INTO Entreprises (propriétaire, org_nr, nom) VALUES('someid', 133769420, 'Quelque chose'); , membre, administrateur) VALUES (@mysql_company_id, 'someid', 1); INSERT INTO CompanyDetails (shippingAddress, company, shortName, ourReference) VALUES (@mysql_address_id, @mysql_company_id, 'Something', 'Something'); }</pré> <p>
P粉549986089P粉549986089420 Il y a quelques jours395

répondre à tous(1)je répondrai

  • P粉037450467

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

    J'ai trouvé la solution ici : https://stackoverflow.com/a/23267627/13214923 Il s'avère que node-mysql ne prend pas en charge plusieurs instructions par défaut.

    En ajoutant

    {multipleStatements: true,}

    dans la configuration de mon pool de connexions et cela a fonctionné comme par magie :)

    répondre
    0
  • Annulerrépondre