我正在编写一些代码,它必须从 MySql 数据库中检索模式(稍后将被移植到其他数据库)。一切正常,除了 COLUMN_DEFAULT - 这似乎为所有可为空的 Text 和 VarChar 项返回一个空字符串,无论实际默认值是 NULL 还是“”。
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 Columns 表显示NULL
在 COLUMN_DEFAULT
如果我这样做
ALTER TABLE `Schedule` CHANGE COLUMN `Url` `Url` VARCHAR(45) NULL DEFAULT NULL
它仍然输出''。
请注意,information_schema Columns 表仍显示NULL
在 COLUMN_DEFAULT
如果我这样做
ALTER TABLE `Schedule` CHANGE COLUMN `Url` `Url` VARCHAR(45) NULL DEFAULT ''
它仍然输出''。
现在 information_schema Columns 表在 COLUMN_DEFAULT 中显示为空白
我在 ClearOs 上使用 MySql 服务器 5.1.73,MySql.Data 6.9.5.0。