🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

3回答

5047閲覧

MySQLでエラー#1089が出てテーブル保存ができない

coinbura

総合スコア106

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

1クリップ

投稿2018/01/19 14:54

編集2018/01/19 15:00

phpMyAdmin(MySQL5.7)で、以下の画像のようになってテーブルが保存できません。

イメージ説明

何が原因なのか分かりますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ほぼ特定したので回答を完全修正

発生するSQL

sql

1CREATE TABLE `users1` ( 2 `id` INT(11) NOT NULL AUTO_INCREMENT, 3 `username` VARCHAR(50) NOT NULL, 4 `password` VARCHAR(50) NOT NULL, 5 `dir` VARCHAR(100) NOT NULL, 6 PRIMARY KEY (`id`(11)) 7) ENGINE = MyISAM;

発生しないSQL

sql

1CREATE TABLE `users1` ( 2 `id` INT(11) NOT NULL AUTO_INCREMENT, 3 `username` VARCHAR(50) NOT NULL, 4 `password` VARCHAR(50) NOT NULL, 5 `dir` VARCHAR(100) NOT NULL, 6 PRIMARY KEY (`id`) 7) ENGINE = MyISAM;

なので MyISAM では PRIMARY KEY に 桁数指定をつけてはいけませんよ

ってことみたいです

※ innoDB では 文字列項目以外で発生する模様

投稿2018/01/19 15:36

編集2018/01/25 13:53
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coinbura

2018/01/19 15:43

すみません。よく分かっていないのですが、 INT(データ型)をPrimaryキーに設定しているつもりでしたが間違っていましたでしょうか?
退会済みユーザー

退会済みユーザー

2018/01/19 15:59

多分名前が問題(ID)をつかってるから・・
coinbura

2018/01/19 16:03

え!そういった問題が起こる事があるんですね! おっしゃるように、名前を「id」から「aaa」に変えて保存してみましたが、無理でした。
coinbura

2018/01/25 13:41

なるほど。MyISAMにはそんな特徴があるんですね。初めて知りました! ただ、画像にもあるように、InnoDBなのでやっぱり謎なんですよね(^^A
退会済みユーザー

退会済みユーザー

2018/01/25 13:50 編集

InnoDB でも同じだったね。 INT項目限定な気がしますが
coinbura

2018/01/25 14:08

今、再度テーブル作成してみました。 で、結果、できました!! PRIMARYを選択した後に出てくるフォームでINTに長さを指定しないでOKを押したらできました! ありがとうございましたm(_ _)m
guest

0

僕も同じでした。

以下のように、保存するようにしました。

最初は、テーブルの項目(名前、データ型、NULL、デフォルト型)だけを定義しました。
その後、

①構造タグで、Uユニークを追加したあと、
"AUTO_INCREMENT"したい項目にチェックして、変更ボタン。
②AI にチェックして保存する。

投稿2018/01/25 12:47

qmomo

総合スコア51

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coinbura

2018/01/25 13:46

私の場合はUユニークボタンを押さずにA_Iをチェックでできました。 ほんと謎ですよね・・・。 そして、今見てみたらphpMyAdminのバージョン情報のところに、 「バージョン情報: 4.4.15.10, 最終安定バージョン: 4.7.7」 と出ていたので、もしかしたらバージョンによる不具合だったのかもしれませんね(^^A
qmomo

2018/01/26 11:26

自分なりにルールを作って、アプリの癖をくぐり抜けていきましょw ・どうすればテーブルを作成できるか? ・なんども作れるか?
退会済みユーザー

退会済みユーザー

2018/01/26 11:38

phpMyAdmin を最新化するだけでも解決しそうではある
guest

0

自己解決

なぜかAUTO_INCREMENTのチェックを外したら登録できました。

エラーメッセージにある、対応がとれていないという「unique prefix key」とは、AUTO_INCREMENTの事だったんですかね…。

謎です。

投稿2018/01/20 09:56

coinbura

総合スコア106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/20 09:58

それで解決したってことはデータとしてすでに入ってたりするのかな
coinbura

2018/01/20 10:00

? データはまだ入ってはいないですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問