получить ошибку 2064 без видимой причины - PullRequest
0 голосов
/ 13 марта 2020

Хорошо, поэтому я загружаю значения в таблицу mysql из nodejs и получаю ошибку 1064, как будто она плохо отформатирована, но я не могу найти проблему. Это запрос:

`"INSERT INTO product_specifics (product_spec_url, product_name, product_price, product_date, product_water_resistan,
 product_ip_rating, product_battery_capacity, product_fast_charging, product_brand, product_image_url,
 product_screen_resolution, product_screen_width, product_pixel_per_inch, product_processor,roduct_processor_name,
 product_ram, product_storage, product_storage_expandable, product_rear_camera_resolution,
 product_rear_camera_number,product_front_camera_resolution, product_front_camera_number, 
product_operating_system_name, product_operating_system_version, product_wifi_standards,product_bluetooth_avaible,
 product_bluetooth_version, product_nfc_avaible, product_audio_jack, product_face_unlock, product_safe_face_unlock)
 VALUES
 ('https://gadgets.ndtv.com/acer-liquid-z6-plus-3730','Acer Liquid Z6 Plus','null','2016-08-15','0','null','4080',
'null','Acer','https://drop.ndtv.com/TECH/product_database/images/831201661028PM_635_acer_liquid_z6_plus.jpeg?downsize=*:180&output-quality=80',
'1920x1080 pixels','5.5','0','1.3GHz octa-core','MediaTek MT6753','3','32','1','13','1','5','1','Android','6',
'802.11 b/g/n','1','null','0','3.5mm','0','0');"`

Это код

const mysql      = require('mysql');

var con = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '',
  database : 'myDB'
});

con.connect(function(err) {
  if (err) throw err;
  console.log("You are now connected with mysql database...");
});  

const uploader = function(potusParse) {
  var lenght = potusParse.length;
  for (let i = 0; i < lenght; i++) {
    var object = potusParse[i];
    con.query("big buoy above", function (err, result) {
      if (err) throw err;
      console.log("1 record inserted");
    });
  }
}

potusParse - аргумент, исходящий из другого модуля, это огромный массив больших объектов, он здесь: https://pastebin.com/VFEWNuXx; Это запрос, который создает таблицу:

CREATE TABLE product_specifics (
    product_spec_url VARCHAR (255),
    product_name VARCHAR(255),
    product_price INT(255),
    product_date DATE,
    product_water_resistan INT(1),
    product_ip_rating VARCHAR(255),
    product_battery_capacity INT(16),
    product_fast_charging VARCHAR(255),
    product_brand VARCHAR(255),
    product_image_url VARCHAR(255),
    product_screen_resolution VARCHAR(255),
    product_screen_width INT(8),
    product_pixel_per_inch INT(16),
    product_processor VARCHAR(255),
    product_processor_name VARCHAR(255),
    product_ram INT(8),
    product_storage INT(16),
    product_storage_expandable INT(255),
    product_rear_camera_resolution INT(8),
    product_rear_camera_number INT(8),
    product_front_camera_resolution INT(8),
    product_front_camera_number INT(1),
    product_operating_system_name VARCHAR(64),
    product_operating_system_version INT(16),
    product_wifi_standards VARCHAR(255),
    product_bluetooth_avaible INT(1),
    product_bluetooth_version INT(16),
    product_nfc_avaible INT(1),
    product_audio_jack VARCHAR (255),
    product_face_unlock INT(1),
    product_safe_face_unlock INT(1)
    ); 
`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 product_specifics (product_spec_url, product_name, product_price, p' at line 1`,

Не стесняйтесь оставлять любые предложения по улучшению моего кода в целом; заранее спасибо

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Хорошо, оказалось, что проблема в том, что мне не нужно было ставить "до и после"

0 голосов
/ 13 марта 2020

Я не думаю, что roduct_processor_name является допустимым столбцом в таблице.

(неясно, является ли это опечаткой или ошибкой копирования / вставки, или это действительно то, что содержится в коде.)

Также обратите внимание, что в одинарных кавычках 'null' является строковым литералом; если мы хотим указать нулевое значение, мы используем ключевое слово NULL, не заключенное в одинарные кавычки.

(Кроме того, почему написание avaible? Как правило, проще использовать фактический английский sh слова, а не своеобразные сокращения.)


Переформатировано SQL утверждение:

INSERT INTO product_specifics
( product_spec_url
, product_name
, product_price
, product_date
, product_water_resistan
, product_ip_rating
, product_battery_capacity
, product_fast_charging
, product_brand
, product_image_url
, product_screen_resolution
, product_screen_width
, product_pixel_per_inch
, product_processor
, roduct_processor_name                        /* invalid column name ? */
, product_ram
, product_storage
, product_storage_expandable
, product_rear_camera_resolution
, product_rear_camera_number
, product_front_camera_resolution
, product_front_camera_number
, product_operating_system_name
, product_operating_system_version
, product_wifi_standards
, product_bluetooth_avaible
, product_bluetooth_version
, product_nfc_avaible
, product_audio_jack
, product_face_unlock
, product_safe_face_unlock
)
VALUES
( 'https://gadgets.ndtv.com/acer-liquid-z6-plus-3730'
, 'Acer Liquid Z6 Plus'
, 'null'                                       /* string literal, not NULL value */
, '2016-08-15'
, '0'
, 'null'                                       /* string literal, not NULL value */
, '4080'
, 'null'
, 'Acer'
, 'https://drop.ndtv.com/TECH/product_database/images/831201661028PM_635_acer_liquid_z6_plus.jpeg?downsize=*:180&output-quality=80'
, '1920x1080 pixels'
, '5.5'
, '0'
, '1.3GHz octa-core'
, 'MediaTek MT6753'
, '3'
, '32'
, '1'
, '13'
, '1'
, '5'
, '1'
, 'Android'
, '6'
, '802.11 b/g/n'
, '1'
, 'null'
, '0'
, '3.5mm'
, '0'
, '0'
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...