• ベストアンサー
  • 暇なときにでも

主キーを追加しようとするとエラー

MYSQL4.0を使っていますが、 テーブル作成後、主キーを追加しようと ALTER TABLE MYTABLE ADD PRIMARY KEY ID; などと書くと、syntaxエラーになってしまいます。 どこが悪いのでしょうか、 分かる人がいましたら教えてください。

noname#10667
noname#10667

共感・応援の気持ちを伝えよう!

  • MySQL
  • 回答数4
  • 閲覧数331
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.4
  • iiikkk
  • ベストアンサー率37% (92/247)

ALTER TABLE JAVA ADD INDEX カラム にするとできますか? すでに PRIMARY KEY が存在するとダメってことかな。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

すいません。やっぱりできません。 ちょっと迷惑がかかると悪いので、とりあえず、 締め切ります。 データベースいじるのは、はじめてですので、 もう少し、勉強してみます(web上では、きちんと 動作しています)。

その他の回答 (3)

  • 回答No.3
  • iiikkk
  • ベストアンサー率37% (92/247)

No.1です。 > mysql> ALTER TABLE JAVA SET PRIMARY KEY ID; > と、打っています。 > との事ですが、 ADD がありませんよ?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

すいません。 ALTER TABLE JAVA ADD PRIMARY KEY ID; でした。 この命令は、必ず下記のエラーになります。

  • 回答No.2
  • iiikkk
  • ベストアンサー率37% (92/247)

No.1です どうでしょうか? エラーコードでも載せてもらえれば、もっと詳細に回答できるかも知れません。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

実は、レンタルサーバー上にMySQLがあり、 GUIによるセッティングでは、主keyの設定が できてしまいました。しかし、手動で、自分の PC上(mysqlコマンド)だとできません。 ERROR 1064:You have an erroro in your sql syntax. こんな感じのエラーです。 ()をつけても、でもだめでした。 ちなみに、 mysql> ALTER TABLE JAVA SET PRIMARY KEY ID; と、打っています。

  • 回答No.1
  • iiikkk
  • ベストアンサー率37% (92/247)

ALTER TABLE MYTABLE ADD PRIMARY KEY (ID); ではどうですか?

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • FOREIGN KEYの追加について。

    FOREIGN KEYの追加について。 MySQL5.1.37 CREATE TABLE `goods` ( `id` int NOT NULL AUTO_INCREMENT, `num` int NOT NULL DEFAULT '1', PRIMARY KEY (`id`), index (`num`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `sales` ( `id` int NOT NULL AUTO_INCREMENT, `num` int NOT NULL DEFAULT '1', PRIMARY KEY (`id`), index (`num`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 上記のようなテーブルを作り、salesテーブルにCSVファイルからデータをインポートしたのち、FOREIGN KEYを子テーブルに追加したいのですが、下記のようなエラーになります。 ALTER TABLE `sales` ADD FOREIGN KEY ( `num` ) REFERENCES `test`.`goods` ( `num` ) ON UPDATE CASCADE ; MySQLのメッセージ: ドキュメント #1452 - Cannot add or update a child row: a foreign key constraint fails (`test`.`#sql-561_cf`, CONSTRAINT `#sql-561_cf_ibfk_1` FOREIGN KEY (`num`) REFERENCES `goods` (`num`) ON UPDATE CASCADE) データをインポートしたのちにFOREIGN KEYを追加するにはどのようにしたらいいのでしょうか?

  • 主キーは既に存在しています。と出てインストールできません

    DVDに入ったあるソフトをインストールしようしたら、 途中で以下のエラーが出てインストールできませんでした。 ALTER TABLE T010 ADD CONSTRAINT PK_T010 PRIMARY KEY(IDT010) 主キーは既に存在しています。 他の人たちは同じDVDからインストールできたのに私だけこのエラーがでてインストールできず困っています。 直し方が分かる方いらっしゃいましたら、よろしくお願いいたします。

  • 重複を許すキーの構文がわかりません。

    データベース自体はPostgreSQLを使っています。そして、アクセス2003を使って、テーブルリンクで閲覧しています。 あるフィールドに検索が早くなるようにキーを設けたいのですが、 重複を許すキーの構文がわかりません。 PRIMARY KEY, UNIQUEの設定はわかるのですが、 どのように記述すればよいのでしょうか? 以下、アクセスのプロパティです。 インデックス ●いいえ デフォルト、無指定 ●はい(重複あり)[***** ここの部分のSQLが知りたい *****] ALTER TABLE テーブル名 ADD ???????? (フィールド); ●はい(重複なし)UNIQUE もしくは値要求混みのPRIMARY KEY ALTER TABLE テーブル名 ADD UNIQUE (フィールド); ALTER TABLE テーブル名 ADD PRIMARY KEY (フィールド);

  • Access 主キーの解除について

    'テーブル[売上]に主キーを設定します DoCmd.RunSQL "ALTER TABLE 売上 ADD PRIMARY KEY (No);" 'テーブル[売上]の主キーを解除します DoCmd.RunSQL "DROP INDEX PRIMARYKEY ON [売上];" Access2007を使用しています。 VBAで主キーの設定・解除をするため、上記のプログラムを組みました。動かしてみると、設定はできたのですが、解除のプログラムで以下のエラーメッセージがでました。 実行時エラー'3372': テーブル'売上'にインデックス'PRIMARYKEY'が見つかりませんでした。 見つからないと出たので売上テーブルを開き確認をしたところ、ちゃんと主キー設定されていました。 そこで手動で主キーの設定しなおしプログラムを動かすと、解除プログラムが動きました。 手動で設定すると動くのですが、何故プログラムで設定した主キーでは動かないのでしょうか。 ご教授のほど、よろしくお願いします。

  • 「テーブルに主キーがありません。」というエラーが出て困ってます。

    VisualStudioでASP.NETをやってます。初心者です。 データグリッドの削除ボタンを押して行を削除したいのですが、 テーブルに主キーがありません。というエラーが出てしまいます。 テーブルに主キーはあるんですけれども、原因がわかりません。 Dim mytable As DataTable Dim myrow As DataRow Dim key As String SqlDataAdapter1.Fill(DataSet11) key = DataGrid1.DataKeys(e.Item.ItemIndex) mytable = DataSet11.Tables("テーブル名") ↓ここでエラーになるようです。 myrow = mytable.Rows.Find(key) myrow.Delete() ご存知の方いらっしゃいましたら、よろしくお願いします。

  • TEXTでのPRIMARY KEYの使い方

    customer テーブルを作って、その中にname, email, passwordをそれぞれtext型が入ってます。その後にalter table customer add customer primary key(email);で、emailにprimary keyをつけようとしてるのですが、ERROR1170 Bolb/Text column 'email' used in key specification without a key lengthと言ってます。textの大きさを指定とかするべきなのでしょうか??本当はcreateの最初の段階で、primary keyを入れたかったのですが、その時も同じエラーが出たため、tableを作ってから追加しようと試みてます。他の型で試してみたら、primary keyは難なく追加できました。text型だと何かやり方が違うのでしょうか。ちなみに全てnot nullに設定してあります。回答お願いします。

    • ベストアンサー
    • MySQL
  • Mysqlに項目を追加するとき順番をかえるには

    こんにちは、 今mysqlを使用しています。 例えば、tbl_EXというテーブルがあり、 そこにはid,name,flgが入っているとしたときに addという項目を追加したい場合は ALTER TABLE tbl_EX ADD add int NULL DEFAULT 0 などとすれば追加できると思うのですが、 その追加を id, name, (add), flg というように 真ん中に入れたい場合は、どうすればいいのでしょうか? 一度テーブルをdropして作り替える以外に方法がある場合、 教えてください。

    • ベストアンサー
    • MySQL
  • FOREIGN KEYの書き方

    オラクル9iを使っています たとえば ☆MST_商品テーブル        ・商品コード  varchar2(10) 主キー  ・分類区分   varchar2(10)  ・商品名称   varchar2(30)  ・仕入先コード varchar2(10) ☆MST_仕入先テーブル  ・仕入先コード varchar2(10)主キー  ・仕入先名称  varchar2(30)    ・取引区分   varchar2(30) があったとして 商品テーブルの仕入先コードと仕入先テーブルの仕入先コードにFOREIGN KEYを使ってリレーションを張りたい場合どのようにSQL文は書いたらいいのでしょうか? ☆CREATE TABLE MST_仕入先    (仕入先コード varchar2(10) NOT NULL,     仕入先名称 varchar2(30), 取引区分 varchar2(30), ALTER TABLE MST_仕入先 ADD CONSTRAINT PMST_仕入先 PRIMARY KEY(仕入先コード); と CREATE TABLE MST_商品 (商品コード varchar2(10),     分類区分 varchar2(10)     商品名称 varchar2(30), 仕入先コード varchar2(10), ALTER TABLE MST_商品 ADD CONSTRAINT PMST_商品 PRIMARY KEY(商品コード); でテーブルと主キーを設定し ALTER TABLE MST_商品 ADD CONSTRAINT FMST_商品 FOREIGN KEY(仕入先コード) REFERENCES MST_仕入先(仕入先コード); ほかにもいろいろ試したのですが にっちもさっちもいかないのでよろしくお願いします。

  • ACCESSのSQLクエリについて

    AccessでのSQLについて教えてください。 リンクテーブルAから新しいテーブルAを作成し、その新テーブルにオートナンバー型のフィールドを追加して、そのフィールドに主キーを設定する、という作業をしたいと思っています。 以下の3つの構文のクエリをそれぞれ作って出来たのですが、この操作を一度に行いたくて、以下のように1つのクエリに入れると、「FROM句の構文エラーです」と出てきてしまいます。 全くの素人で仕組みは全然理解できてないので、ちょっと調べたのですがよくわかりません。上手くいく入力方法を教えていただけると嬉しいです。よろしくお願いいたします。 SELECT Sheet1A.F1, Sheet1A.F2, Sheet1A.F3, Sheet1A.F4, Sheet1A.F9 INTO A FROM Sheet1A ALTER TABLE A ADD ID COUNTER ALTER TABLE A ADD PRIMARY KEY (ID);

  • MYSQLデータベースの移行

    現在WordPressで運用しているサイトをサーバーにあげているのですが、ローカルでCSS等の微調整をしたいのでローカルのXAMPP環境に移行させたいと思っています。 サーバーのMYSQLからエクスポートした後ローカルでインポートしようと試みたのですがwp_commentmeta以外のテーブルができません。エラーメッセージは下記のものです。 ALTER TABLE `wp_commentmeta` ADD PRIMARY KEY (`meta_id`), ADD KEY `comment_id` (`comment_id`), ADD KEY `meta_key` (`meta_key`(191)) 単純なことなのかもしれませんがどこをどうすればいいのか分かりません。ご教授いただければ幸いです。