programing

이 MySQL 오류가 발생하지 않도록 하려면 어떻게 해야 합니까? COLUMN NAME에 대한 잘못된 열 지정자?

goodsources 2023. 7. 30. 17:44
반응형

이 MySQL 오류가 발생하지 않도록 하려면 어떻게 해야 합니까? COLUMN NAME에 대한 잘못된 열 지정자?

이 MySQL 오류가 발생하지 않도록 하려면 어떻게 해야 합니까? topic_id지정자가 잘못되었습니다.

MySQL 오류...

#1063 - Incorrect column specifier for column 'topic_id'

SQL 스키마...

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;

사용하기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;

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;

문서 인용:

일부 특성은 일부 데이터 유형에 적용되지 않습니다.AUTO_INCREMENT정수 및 부동 소수점 유형에만 적용됩니다.DEFAULT에는 적용되지 않습니다.BLOB또는TEXT종류들.

당신의 경우, 당신은 지원하려고 합니다.AUTO_INCREMENT에 대한 수식어.char기둥.이 문제를 해결하려면 드롭 중 하나를 선택합니다.AUTO_INCREMENT전체적으로(즉, 애플리케이션 수준에서 고유한 ID를 생성해야 함) 또는 그냥 변경합니다.topic_id관련 정수로 입력합니다.

참고로, 다음을 사용하는 것은 거의 의미가 없습니다.char(36)게시물 수를 저장하려면 해당 열의 유형도 변경해야 합니다.정수 오버플로를 방지하기 위해 이 길을 가는 것처럼 보이지만, 만약 당신이 다음 이상을 다루고 있습니다.18446744073709551615게시물(저장할 수 있는 가장 큰 수)BIGINT UNSIGNED칼럼) 하나의 주제에서, 당신은 아마도 당신 쪽에서 훨씬 더 큰 문제를 가지고 있을 것입니다.

자동으로 증분할 수 없습니다.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;

이것이 도움이 되길 바랍니다.

저도 같은 문제를 겪고 있었는데 Long 타입을 사용하고 있었습니다.저는 INT로 바꿨고 저에게 효과가 있었습니다.

CREATE TABLE lists (
 id INT NOT NULL AUTO_INCREMENT,
 desc varchar(30),
 owner varchar(20),
 visibility boolean,
 PRIMARY KEY (id)
 );

언급URL : https://stackoverflow.com/questions/26134912/how-can-i-avoid-getting-this-mysql-error-incorrect-column-specifier-for-column-c

반응형