2009-05-06 3 views
1

J'ai une table appelée emplois et je peux obtenir des données hors de la table sans aucun problème, mais l'enregistrement pose des problèmes. Voici le code et l'erreur:Pourquoi est-ce que je ne peux pas enregistrer une transaction de base de données en utilisant SubSonic?

 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(); 

Voici l'erreur:

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 

Pour clarifier les choses, si je modifier un emploi existant, il fonctionne très bien, il est seul point de nouveaux emplois qui échoue.

Voici le schéma:

Créer un tableau Tableau


emploi CREATE TABLE jobs (
id int (11) NOT auto_increment NULL,
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 par défaut,
source_username varchar (50) NULL par défaut,
source_password varchar (50) NULL par défaut,
source_directory varchar (100) NULL par défaut,
source_ignore_extension varchar (10) NULL par défaut,
target_type varchar (10) NOT NULL,
target_host varchar (100) NULL par défaut,
target_username varchar (50) NULL par défaut,
target_password varchar (50) NULL par défaut,
target_directory varchar (100) NULL par défaut,
target_temp_extension varchar (10) NULL par défaut,
enabled tinyint (1) NOT NULL,
interval int (11) NOT NULL,
clé primaire (id)
) MOTEUR = InnoDB AUTO_INCREMENT = 7 DEFAULT charset = latin1

Répondre

1

Il ressemble à un la valeur n'est pas analysée correctement - j'ai besoin de voir le schéma SQL et le code SQL généré - avez-vous un profileur? Quelque chose qui vous permet de regarder ce qui se passe? Interval est un mot réservé MySQL :) - pouvez-vous entrer un bug sur ce sujet? Nous devrions attraper cela ...

+0

aucun profileur, que recommandez-vous que j'utilise? –

+0

Si vous êtes au-dessus de la version 5.0.37, vous pouvez utiliser ceci: http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html De votre schéma je suppose activé ou intervalle a une valeur non valide. –

+0

Adam, c'est ce que je pensais mais ça marche bien si je suis en train de mettre à jour et d'enregistrer, mais que je n'en ai pas ajouté un nouveau. –