このエラーの原因は、MySQLの設定で「sql_require_primary_key」システム変数が有効になっているためです。この変数は、テーブル作成や変更時に主キーの指定を要求するかどうかを制御します。この変数が有効になっている場合、テーブルの作成や変更時に必ず主キーを指定する必要があります。
このエラーを解決する方法としては、以下のいくつかの方法があります。
-
主キーを指定する: テーブル作成時に主キーを指定することで、エラーを回避することができます。主キーは一意の識別子であり、テーブル内の各行を一意に識別する役割を果たします。以下は、主キーを指定する例です。
CREATE TABLE テーブル名 ( 列名 データ型, ... PRIMARY KEY (主キーの列名) );
-
主キー制約を追加する: 既存のテーブルに主キーを追加することもできます。以下は、ALTER TABLE文を使用して主キーを追加する例です。
ALTER TABLE テーブル名 ADD PRIMARY KEY (主キーの列名);
-
sql_require_primary_key変数を無効化する: エラーが表示されないようにするには、sql_require_primary_key変数を無効にすることもできます。以下は、SET文を使用してこの変数を無効にする例です。
SET GLOBAL sql_require_primary_key = 0;
ただし、この方法はセキュリティ上のリスクを伴うため、慎重に使用する必要があります。
以上の方法を使用することで、MySQLでのテーブル作成や変更時の主キー関連のエラーを解決できるはずです。また、主キーの役割や他の制約についても学ぶことができます。