0

MySql データベースからスキーマを取得する必要があるコードを書いています (後で他のデータベースに移植されます)。COLUMN_DEFAULT を除いて、すべて機能しています。これは、実際のデフォルトが NULL であるか '' であるかに関係なく、null 可能なすべての Text および VarChar アイテムに対して空の文字列を返すようです。

    CREATE TABLE `Schedule` (
      `idSchedule` int(11) NOT NULL AUTO_INCREMENT,
      `ActionDate` datetime NOT NULL,
      `RepeatType` int(11) NOT NULL DEFAULT '0',
      `Task` varchar(45) NOT NULL,
      `Url` varchar(45) DEFAULT NULL,
      `Parameters` text,
      `Post` tinyint(1) NOT NULL DEFAULT '0',
      PRIMARY KEY (`idSchedule`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;


    using(MySqlConnection conn = new MySqlConnection(connectionString)) {
        conn.Open();
        DataTable cols = conn.GetSchema("Columns");
        foreach(DataRow c in cols.Select("TABLE_NAME = 'Schedule' AND COLUMN_NAME = 'Url'")) {
            Console.WriteLine(c["COLUMN_DEFAULT"] == System.DBNull.Value ? "null" : "'" + c["COLUMN_DEFAULT"] + "'");
        }
    }

これは '' を出力します。

information_schema 列テーブルNULLが COLUMN_DEFAULT に表示されることに注意してください。

もし私がそうしたら

    ALTER TABLE `Schedule` CHANGE COLUMN `Url` `Url` VARCHAR(45) NULL DEFAULT NULL

それでも '' が出力されます。

information_schema 列テーブルは引き続きNULLCOLUMN_DEFAULT に表示されることに注意してください。

もし私がそうしたら

    ALTER TABLE `Schedule` CHANGE COLUMN `Url` `Url` VARCHAR(45) NULL DEFAULT ''

それでも '' が出力されます。

information_schema 列テーブルの COLUMN_DEFAULT に空白が表示されるようになりました

ClearOs、MySql.Data 6.9.5.0 で MySql サーバー 5.1.73 を使用しています。

4

0 に答える 0