MySQLからのエラーを修正するにはどうすればよいですか?自動インクリメントカラムは1つしか持てません。
CREATE TABLE book (
id INT AUTO_INCREMENT NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
私のMySQLは「テーブル定義が間違っています。自動カラムは1つしか存在できませんそしてキーとして定義する必要があります」
CREATE TABLE book (
id INT AUTO_INCREMENT NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL,
primary key (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
完全なエラーメッセージが聞こえます:
エラー1075(42000):テーブル定義が正しくありません。自動列は1つのみで、キーとして定義する必要があります
primary key
フィールドにauto_increment
を追加します。
CREATE TABLE book (
id INT AUTO_INCREMENT primary key NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
また、「キー」は必ずしもprimary keyを意味するわけではないことに注意してください。このような何かが動作します:
CREATE TABLE book (
isbn BIGINT NOT NULL PRIMARY KEY,
id INT NOT NULL AUTO_INCREMENT,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL,
INDEX(id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
これは人為的な例であり、おそらく最良のアイデアではありませんが、特定のケースでは非常に有用です。
CREATE TABLE book (
id INT AUTO_INCREMENT primary key NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1