如何避免收到此MySQL错误列topic_id 的列说明不正确?
MySQL错误......
#1063 - Incorrect column specifier for column 'topic_id'
SQL Schema ...
CREATE TABLE discussion_topics (
topic_id char(36) NOT NULL AUTO_INCREMENT,
project_id char(36) NOT NULL,
topic_subject VARCHAR(255) NOT NULL,
topic_content TEXT default NULL,
date_created DATETIME NOT NULL,
date_last_post DATETIME NOT NULL,
created_by_user_id char(36) NOT NULL,
last_post_user_id char(36) NOT NULL,
posts_count char(36) default NULL,
PRIMARY KEY (topic_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
答案 0 :(得分:33)
要使用AUTO_INCREMENT
,您需要将列定义为INT
或浮点类型,而不是CHAR
。
AUTO_INCREMENT
仅使用无符号值,因此使用UNSIGNED
也不错;
CREATE TABLE discussion_topics (
topic_id INT NOT NULL unsigned AUTO_INCREMENT,
project_id char(36) NOT NULL,
topic_subject VARCHAR(255) NOT NULL,
topic_content TEXT default NULL,
date_created DATETIME NOT NULL,
date_last_post DATETIME NOT NULL,
created_by_user_id char(36) NOT NULL,
last_post_user_id char(36) NOT NULL,
posts_count char(36) default NULL,
PRIMARY KEY (topic_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
答案 1 :(得分:5)
auto_increment
属性仅适用于数字列(整数和浮点),而不适用于char
列:
CREATE TABLE discussion_topics (
topic_id INT NOT NULL AUTO_INCREMENT,
project_id char(36) NOT NULL,
topic_subject VARCHAR(255) NOT NULL,
topic_content TEXT default NULL,
date_created DATETIME NOT NULL,
date_last_post DATETIME NOT NULL,
created_by_user_id char(36) NOT NULL,
last_post_user_id char(36) NOT NULL,
posts_count char(36) default NULL,
PRIMARY KEY (topic_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
答案 2 :(得分:3)
引用doc:
某些属性不适用于所有数据类型。
AUTO_INCREMENT
适用 仅限整数和浮点类型。DEFAULT
不适用于此BLOB
或TEXT
类型。
在您的情况下,您尝试将AUTO_INCREMENT
修饰符应用于char
列。要解决此问题,请完全删除AUTO_INCREMENT
(这意味着您必须在应用程序级别生成唯一ID)或者只需将topic_id
类型更改为相关的整数。
作为旁注,使用char(36)
存储帖子 count 是没有意义的,因此列的类型可能也必须更改。看起来你是这样做的,以防止整数溢出 - 但如果你正在处理超过18446744073709551615
个帖子(可以存储在BIGINT UNSIGNED
列中的最大数量)一个主题,你可能有更大的问题。 )
答案 3 :(得分:3)
我遇到了同样的问题,但使用的是Long类型。我改为INT,它对我有用。
(Action)Delegate.CreateDelegate(typeof(Action), mb, mi)
答案 4 :(得分:2)
您无法自动增加char
值。它应该是int
或long
(整数或浮点数)。
试试这个,
CREATE TABLE discussion_topics (
topic_id int(5) NOT NULL AUTO_INCREMENT,
project_id char(36) NOT NULL,
topic_subject VARCHAR(255) NOT NULL,
topic_content TEXT default NULL,
date_created DATETIME NOT NULL,
date_last_post DATETIME NOT NULL,
created_by_user_id char(36) NOT NULL,
last_post_user_id char(36) NOT NULL,
posts_count char(36) default NULL,
PRIMARY KEY (`topic_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
希望这有帮助