我有一张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);
}
}
}
},
型
1条答案
按热度按时间scyqe7ek1#
我想明白了。这是我在Postman上执行POST请求的方式的问题。Postman在POST请求的正文中使用默认的Text设置而不是JSON,这使得我的req.body未定义。将其更改为JSON解决了这个问题。