INSERT INTO SQL запрос не работает столбец не определено - PullRequest
0 голосов
/ 17 октября 2018
def self.create_tables
  connection = PG.connect(dbname: 'clients')
  connection.exec('CREATE TABLE client_details (
                Company_ID SERIAL PRIMARY KEY,
                Company_Name text,
                Company_Telephone text,
                Company_Representitive text,
                Company_Email text,
                Company_Address text,
                Company_Contract_Start_Date text,
                Company_Contract_End_Date text
                )')
end
def self.create_table_data
  connection = PG.connect(dbname: 'clients')
  connection.exec('INSERT INTO client_detail (
  Company_Name,
  Company_Telephone,
  Company_Representitive,
  Company_Email,
  Company_Address,
  Company_Contract_Start_Date,
  Company_Contract_End_Date) 
  VALUES (
  "Monoprix", 
  "1234", 
  "sarah", 
  "dan@dan.com", 
  "this road", 
  "12", 
  "13");')
end

Когда я запускаю первую функцию, она работает, когда я запускаю вторую функцию, я получаю сообщение об ошибке:

Traceback (most recent call last):
         2: from lib/data_generator.rb:22:in `<main>'
         1: from lib/data_generator.rb:6:in `create_table_data'
    lib/data_generator.rb:6:in `async_exec': ERROR:  column"monoprix" does not exist (PG::UndefinedColumn)
    LINE 1: ...act_Start_Date,Company_Contract_End_Date) VALUES (Monoprix, ...
                                                                    ^

Я не знаю, почему ошибка сообщает мне, что этот столбец 'monoprix'не существует, когда я пытаюсь вставить значение' monoprix 'в COLUMN Company_Name, а не' monoprix '.

Однако, когда я вставляю VALUES значения 1,2,3,4,5,6,7 все работает нормально.

Я в тупике.

Я хочу вставить 'monoprix' в столбец 'Company_Name'.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Вы пробовали это:

def self.create_tables
  connection = PG.connect(dbname: 'clients')
  connection.exec('CREATE TABLE client_details (
                Company_ID SERIAL PRIMARY KEY,
                Company_Name text,
                Company_Telephone text,
                Company_Representitive text,
                Company_Email text,
                Company_Address text,
                Company_Contract_Start_Date text,
                Company_Contract_End_Date text
                )')
end
def self.create_table_data
  connection = PG.connect(dbname: 'clients')
  connection.exec('INSERT INTO client_detail (
  Company_Name,
  Company_Telephone,
  Company_Representitive,
  Company_Email,
  Company_Address,
  Company_Contract_Start_Date,
  Company_Contract_End_Date) 
  VALUES (
  \'Monoprix\', 
  \'1234\', 
  \'sarah\', 
  \'dan@dan.com\', 
  \'this road\', 
  \'12\', 
  \'13\');')
end

Кажется глупым, но должен отметить все очевидные поля.

0 голосов
/ 17 октября 2018

Ваша ошибка произошла из кавычек " в строке.Вам нужно либо использовать обратную косую черту, чтобы разграничить их, в соответствии с ответом Майка, либо использовать одинарные внутри строки и двойные, чтобы разграничить саму строку, как я сделал ниже.Попробуйте снова заменить их одинарными кавычками: '

def self.create_tables
  connection = PG.connect(dbname: 'clients')
  connection.exec('CREATE TABLE client_details (
                Company_ID SERIAL PRIMARY KEY,
                Company_Name text,
                Company_Telephone text,
                Company_Representitive text, 
                    Company_Email text,
                Company_Address text,
                Company_Contract_Start_Date text,
                Company_Contract_End_Date text
                )')
end
def self.create_table_data
  connection = PG.connect(dbname: 'clients')
  connection.exec("INSERT INTO client_detail (
  Company_Name,
  Company_Telephone,
  Company_Representitive,
  Company_Email,
  Company_Address,
  Company_Contract_Start_Date,
  Company_Contract_End_Date) 
  VALUES (
  'Monoprix', 
  '1234', 
  'sarah', 
  'dan@dan.com', 
  'this road', 
  '12', 
  '13');")
end
...