programing

노드를 사용하여 MariaDB에 데이터를 삽입하는 데 문제가 발생했습니다.제이에스

telecom 2023. 6. 19. 21:07
반응형

노드를 사용하여 MariaDB에 데이터를 삽입하는 데 문제가 발생했습니다.제이에스

const mariadb = require('mariadb/callback');
const connection = mariadb.createConnection({
  host     : 'localhost',
  user     : 'tudublin',
  password : 'Tudublin@2020',
  database : 'IOT',
  timezone: 'Europe/Dublin',
});
 
connection.connect(err => {
    if (err) {
      console.log("not connected due to error: " + err);
    } else {
      console.log("connected ! connection id is " + connection.threadId);
    }
  });

connection.query("INSERT INTO observations VALUES (?, ?, ?, ?)", [2, 20, "oC", Date.now()], (err, result) => {
      if (err) throw err;
      console.log(result);
      //log : { affectedRows: 1, insertId: 1, warningStatus: 0 }
    }
  );
MariaDB [IOT]> describe observations;
+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| data_id   | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| sensor_id | int(10) unsigned | NO   | MUL | NULL    |                |
| temp      | int(11)          | YES  |     | NULL    |                |
| temp_unit | varchar(30)      | YES  |     | NULL    |                |
| dt_added  | datetime         | YES  |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+
5 rows in set (0.003 sec)

안녕하세요.

관측치 표에 데이터를 삽입하려고 합니다.하지만 오류가 계속 표시됩니다.

code: 'ER_WRONG_VALUE_COUNT_ON_ROW'

아래 명령을 사용하여 테이블을 만들었습니다.

CREATE TABLE observations (data_id INT unsigned not null auto_increment primary key,sensor_id INT unsigned not null, temp int, temp_unit VARCHAR(30), dt_added DATETIME);

&

ALTER TABLE observations ADD FOREIGN KEY (sensor_id) REFERENCES sensors(sensor_id);

4개의 값만 입력하고 나머지 하나는 기본 키로 설정된 data_id와 auto_increments이기 때문에 설정 방법은 괜찮을 것이라고 생각했습니다.위의 오류가 나타나는 이유에 대해 아는 사람이 있습니까?

감사합니다!

INSERT INTO observations VALUES (?, ?, ?, ?)모든 열과 기본 키에 값을 제공해야 하기 때문에 값과 연관된 열 이름을 생략합니다(자동 증분을 사용하는 경우에도 마찬가지입니다.

일반적으로 값을 삽입할 때 열 순서에만 의존하지 말고 해당 열 이름을 사용해야 합니다.이렇게 하면 어떤 이유로 열 순서가 변경되는 경우에 향후 문제가 발생하지 않도록 방지할 수 있으며 다음을 생략할 수 있습니다.data_id열:

INSERT INTO `observations`(`sensor_id`, `temp`, `temp_unit`, `dt_added`) VALUES (?,?,?,?) 

언급URL : https://stackoverflow.com/questions/65207645/issue-with-inserting-data-into-mariadb-using-nodejs

반응형