Защо не мога да запазя транзакция на база данни с помощта на 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

За да поясня, ако редактирам съществуваща работа, тя работи добре, само запазването на нови задачи е неуспешно.

Ето и схемата:

Таблица Създаване на таблица


задания 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) НЕ 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) НЕ 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) НЕ NULL,
interval int(11 ) NOT NULL,
PRIMARY KEY (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/ От вашата схема бих предположил, че или enabled, или interval има невалидна стойност. - 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