Почему я не могу сохранить транзакцию базы данных с помощью SubSonic?

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

        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

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

Вот схема:

Таблица Создать таблицу


jobs 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, < br> target_password varchar (50) по умолчанию NULL,
target_directory varchar (100) по умолчанию NULL,
target_temp_extension varchar (10) по умолчанию NULL,
enabled tinyint (1) NOT NULL,
interval int (11 ) NOT NULL,
ПЕРВИЧНЫЙ КЛЮЧ (id)
) ENGINE = InnoDB AUTO_INCREMENT = 7 DEFAULT CHARSET = latin1


person Mike Roosa    schedule 06.05.2009    source источник


Ответы (1)


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

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

person Community    schedule 06.05.2009
comment
Если у вас версия выше 5.0.37, вы можете использовать это: dev.mysql.com/tech-resources/articles/ Судя по вашей схеме, я предполагаю, что либо включен, либо интервал имеет недопустимое значение. - person Adam Cooper; 06.05.2009
comment
Адам, это то, что я понял, но он отлично работает, если я обновляю существующую запись, просто не добавляя новую. - person Mike Roosa; 07.05.2009
comment
Адам, я пробовал этот инструмент профилирования, но он, похоже, не дает мне команд, которые переходят из моего студийного приложения в mysql. Я думаю, мне нужен какой-то профилировщик в моем приложении, чтобы увидеть, что оно передает. - person Mike Roosa; 07.05.2009
comment
интервал был зарезервированным словом mysql. изменил это, и теперь все в порядке. - person Mike Roosa; 07.05.2009