Почему я не могу сохранить транзакцию базы данных с помощью SubSonic? - PullRequest
1 голос
/ 06 мая 2009

У меня есть таблица, называемая заданиями, и я могу получить данные из таблицы без проблем, но сохранение вызывает проблемы. Вот код и ошибка:

        Job job = new Job(JobId);

        job.Name = txtName.Text;
        job.SimsCustCode = txtSimsCustCode.Text;
        job.Mode = cboMode.Text;
        job.Interval = Convert.ToInt32(nudInterval.Text);
        job.Enabled = Convert.ToBoolean(chkEnabled.Checked);

        job.SourceHost = txtSourceHostName.Text;
        job.SourceType = cboSourceType.Text;
        job.SourceUsername = txtSourceUsername.Text;
        job.SourcePassword = txtSourcePassword.Text;
        job.SourceDirectory = txtSourceDirectory.Text;
        job.SourceIgnoreExtension = txtSourceIgnoreExtension.Text;

        job.TargetHost = txtTargetHostName.Text;
        job.TargetType = cboTargetType.Text;
        job.TargetUsername = txtTargetUsername.Text;
        job.TargetPassword = txtTargetPassword.Text;
        job.TargetDirectory = txtTargetDirectory.Text;
        job.TargetTempExtension = txtTargetTempExtension.Text;

        job.Save();

Вот ошибка:

A first chance exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval) VALUES('adf','adsf','inbound','ftp','','','','','','ftp','','','','','' at line 1

Чтобы уточнить, если я редактирую существующее задание, оно работает нормально, оно только сохраняет новые задания, которые терпят неудачу.

Вот схема:

Таблица создания таблицы


заданий CREATE TABLE jobs (
id int (11) NOT NULL auto_increment,
name varchar (100) NOT NULL,
sims_cust_code varchar (10) NOT NULL,
mode varchar (10) NOT NULL,
source_type varchar (10) NOT NULL,
source_host varchar (100) по умолчанию NULL,
source_username varchar (50) по умолчанию NULL,
source_password varchar (50) по умолчанию NULL,
source_directory varchar (100) по умолчанию NULL,
source_ignore_extension varchar (10) по умолчанию NULL,
target_type varchar (10) NOT NULL,
target_host varchar (100) по умолчанию NULL,
target_username varchar (50) по умолчанию NULL,
target_password varchar (50) по умолчанию NULL,
target_directory varchar (100) по умолчанию NULL,
target_temp_extension varchar (10) по умолчанию NULL,
enabled tinyint (1) НЕ NULL,
interval int (11) NOT NULL,
ПЕРВИЧНЫЙ КЛЮЧ (id)
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARSET ПО УМОЛЧАНИЮ = latin1

1 Ответ

1 голос
/ 06 мая 2009

Похоже, что значение не анализируется правильно - мне нужно посмотреть схему SQL, а также генерируемый SQL - у вас есть профилировщик? Что-то, что позволяет вам наблюдать за происходящим?

Интервал - зарезервированное слово MySQL :) - можете ли вы указать на это ошибку? Мы должны это уловить ...

...