簡體   English   中英

字段名稱沒有默認值

[英]Field name does not have a default value

我正在嘗試在competition表中插入具有以下結構的記錄:

CREATE TABLE IF NOT EXISTS `mydb`.`competition` (
  `id` INT NOT NULL,
  `country_id` INT NULL,
  `name` VARCHAR(255) NOT NULL,
  `link` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `id_idx` (`country_id` ASC),
  CONSTRAINT `FK_country_competition_country_id`
    FOREIGN KEY (`country_id`)
    REFERENCES `mydb`.`country` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

我的代碼有以下設計:

 using (MySqlConnection connection = new DBConnection().Connect())
 {
     using (MySqlCommand command = new MySqlCommand())
     {
         command.Connection = connection;           
         command.CommandText = "INSERT INTO competition (id, country_id, name, link) " +
                        "VALUES (@id, @country_id, @name, @link)";

         command.Parameters.AddWithValue("@id", 840);
         command.Parameters.AddWithValue("@country_id", 2);
         command.Parameters.AddWithValue("@name", "Superliga");
         command.Parameters.AddWithValue("@link", "https://int.soccerway.com/national/albania/super-league/20172018/regular-season/r42054/");
         command.ExecuteNonQuery();
       }
  }

當代碼到達這一行時: command.ExecuteNonQuery();

我明白了:

發生異常:CLR / MySQL.Data.MySqlClient.MySqlException MySQL.Data.dll中出現類型'MySQL.Data.MysqlClient.MySqlException'的異常,但未在用戶代碼中處理:'field'name'沒有默認值'。

現在competition表的字段name被設置為NOT NULL因此它沒有默認值,但是我向命令傳遞了一個正確的值,所以我不明白為什么會顯示這個錯誤,任何想法?

Name是MySql中保留關鍵字

最好的操作是將該列更改為其他文本,但如果您確實想要使用該列,則需要在該標識符周圍添加反引號

command.CommandText = @"INSERT INTO competition (id, country_id, `name`, link)
                        VALUES (@id, @country_id, @name, @link)";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM