programing

NextJS Myslog INSERT는 phpmyadmin을 통한 명령에서는 작동하지만 api의 쿼리에서는 작동하지 않습니다.

itmemos 2023. 6. 21. 22:22
반응형

NextJS Myslog INSERT는 phpmyadmin을 통한 명령에서는 작동하지만 api의 쿼리에서는 작동하지 않습니다.

제목에서 알 수 있듯이, 내 SQL 코드는 phpmyadmin에서 작동하지만 api의 요청에는 작동하지 않습니다.myapi는 mysql 패키지를 사용합니다.

npm i mysql

SQL 코드:

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;

그리고 이것은 phpmyadmin에서 완전히 잘 작동합니다.

다음을 사용하여 함수를 호출합니다.

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) => {
            if (err) return res.status(422).json(err);
            return res.status(200).json(result);
          }
        );

표시되는 오류는 다음과 같습니다.

{"code":"ER_PARSE_ERROR","errno":1064,"sqlMessage":"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","sqlState":"42000","index":0,"sql":"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;"}

이것이 무엇 때문에 발생할 수 있는지 아는 사람이 있습니까?어떤 도움이든 감사합니다 :)

여기서 해결책을 찾았습니다. https://stackoverflow.com/a/23267627/13214923 노드 프로토콜은 기본적으로 여러 문을 지원하지 않습니다.

을 추가하여

{multipleStatements: true,} 

내 풀 구성에 그것은 매력적으로 작동했습니다 :)

언급URL : https://stackoverflow.com/questions/71698097/nextjs-mysql-insert-works-with-commands-through-phpmyadmin-but-not-with-query-fr

반응형