在phpMyAdmin中执行CREATE TABLE语句遇#1101错误求助
解决方案
错误#1101的原因是:MySQL中TEXT、BLOB这类大字段类型不允许设置默认值,这是SQL标准的限制,也是MySQL的默认行为。
你只需要修改transactions字段的定义,移除DEFAULT '0'即可,修改后的SQL如下:
CREATE TABLE IF NOT EXISTS `moneysafes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `safe` varchar(50) NOT NULL DEFAULT '0', `money` int(11) NOT NULL DEFAULT 0, `transactions` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
如果你的业务逻辑需要这个字段默认有值(比如初始为'0'),可以考虑将字段类型改为VARCHAR(只要内容长度在对应字符集的VARCHAR限制内),这样就能设置默认值了:
CREATE TABLE IF NOT EXISTS `moneysafes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `safe` varchar(50) NOT NULL DEFAULT '0', `money` int(11) NOT NULL DEFAULT 0, `transactions` varchar(65535) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
注意:VARCHAR的最大长度受字符集影响,比如latin1字符集下最大支持65535字节(即65535个字符),如果是utf8mb4字符集则会相应减少。
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

