oracle 当我向数据库添加主键自动递增的行时,我得到“Error executing SQL query:Error:ORA-01400:cannot insert NULL”

67up9zun  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(131)

我有一张table

CREATE TABLE countries 
(
    country_id INT GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1) PRIMARY KEY, 
    country_name VARCHAR(255) NOT NULL
);

字符串
我正在尝试发送一个POST请求到此以在我的数据库中插入一行。这是我的POST请求的正文{"country_name "=" PK "}我在发送POST请求时收到此错误
我正在使用Oracle 21c BTW
执行SQL查询时出错:错误:ORA-01400:无法将NULL插入("C##USER"."COUNTRIES"."COUNTRY_NAME")
帮助:https://docs.oracle.com/error-help/db/ora-01400/
at Protocol._processMessage(C:\Users\HP\Desktop\Ticketeer\node_modules\oracledb\lib\thin\protocol\protocol. js:172:17)
在process. processTicksAndRejections(node:internal/process/task_queues:95:5)
在ThinConnectionImpl._execute(C:\Users\HP\Desktop\Ticketeer\node_modules\oracledb\lib\thin\connection. js:195:7)at jsp ThinConnectionImpl. execute(C:\Users\HP\Desktop\Ticketeer\node_modules\oracledb\lib\thin\connection. js:927:14)at jsoc Connection. execute(C:\Users\HP\Desktop\Ticketeer\node_modules\oracledb\lib\connection. js:861:16),地址为:http://www.js.com/index.html。(C:\Users\HP\Desktop\Ticketeer\node_modules\oracledb\lib\util. js:165:14),网址为:http://www.addnewCountry(C:\Users\HP\Desktop\Ticketeer\backend\controller\countriesController. js:126:13){偏移量:46,错误代码:1400,代码:' ORA-01400 '}
在我的国家/地区控制器中,我尝试硬编码www.example.com_name并将其分配为字符串形式的国家/地区名称。当我发送请求时,该国家/地区名称输入到数据库中,但本应为2的country_id为22。以下是我的AddNewCountry的API代码

AddNewCountry: async function (req, res){
        let connection ;
        try {
 
          connection = await getConnection();
            const query = `INSERT INTO countries (country_name) VALUES (:1)`;
            const binds = [req.body.country_name];
            const options = {
              autoCommit: true, 
            };
            
            await connection.execute(query,binds,options);
            res.status(202).send("Added");
        } 
        catch (error) {
            console.error('Error executing SQL query:', error);
            res.status(500).send('Internal Server Error');
          
        } 
        finally {
            if (connection) {
              try {
                // Release the connection when done
                await connection.close();
              } catch (error) {
                console.error('Error closing database connection:', error);
              }
            }
        }
    },

scyqe7ek

scyqe7ek1#

我想明白了。这是我在Postman上执行POST请求的方式的问题。Postman在POST请求的正文中使用默认的Text设置而不是JSON,这使得我的req.body未定义。将其更改为JSON解决了这个问题。

相关问题