宜しくお願い致します。
先程気付いたのですが、MySQLのKey属性に「MUL」という指定が入っていました。こんな指定をした覚えが全く無いので、消そうと思い、alter table modify でカラムの属性を変更させてもやっぱり消えないのですが、これはなんなんでしょう?

A 回答 (2件)

> 重複キーを変更したい場合はどうすればよいのでしょう?



ALTER TABLE テーブル名 DROP INDEX `現在のインデックス名`,ADD UNIQUE `新しいインデックス名` (`hoge`,`huge`)

一旦、DROP INDEXで消してADDでまた加えます。
    • good
    • 0
この回答へのお礼

ありがとうございます!
早速やってみます。
助かりました!!

お礼日時:2005/04/17 10:39

Multiple(重複キー)でキーの設定をすると勝手に入ります。

この回答への補足

ありがとうございます。
ちなみに、重複キーを変更したい場合はどうすればよいのでしょう?

補足日時:2005/04/16 07:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qインデックスキーを設定するとKeyがMULに。

MySQLのインデックスキーを設定するとプライマリーキーが設定されてしまいます。

phpMyAdminを使用しています。
localhostページの一番下には、下記2つの注意が発せられています。
■phpMyAdmin の新しいバージョンが提供されています。アップグレードの検討をお奨めします。最新バージョンは 3.5.1 で、2012-05-03 にリリースされています。
■phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。

localhostページの右側にあるバージョン情報は、
<データベースサーバ>
ソフトウェア: MySQL
ソフトウェアバージョン: 5.0.96-community-nt - MySQL Community Edition (GPL)
プロトコルバージョン: 10
サーバの文字セット: UTF-8 Unicode (utf8)

<ウェブサーバ>
Apache/2.4.1 (Win32) PHP/5.2.17
データベースクライアントのバージョン: libmysql - 5.0.51a
PHP 拡張: mysqli

<phpMyAdmin>
バージョン情報: 3.5.0, 最終安定バージョン: 3.5.1

現段階は、下記のようなテーブル構造になっています。
下記は質問用にデータをコピーするためにMySQL monitorを使いました。
フィールドの追加やキーの追加と削除はphpMyAdminで行っています。

(1)テーブルの構造
mysql> SHOW FIELDS FROM `infotable`;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | text | NO | | NULL | |
| kudamono | text | NO | | NULL | |
| coment | text | NO | | NULL | |
| tes | int(11) | NO | | NULL | |
+----------+---------+------+-----+---------+-------+

(2)`tes`にインデックスキーを設定
phpMyAdminの「構造」画面でtesフィールドの「操作」欄の「その他」ドロップダウンから「インデックスを追加する」をクリック
phpMyAdminの画面に
ALTER TABLE `infotable` ADD INDEX ( `tes` )
と表示され`tes`にインデックスキーを設定しました。

(3)インデックスキー設定後のテーブルの構造
mysql> SHOW FIELDS FROM `infotable`;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | text | NO | | NULL | |
| kudamono | text | NO | | NULL | |
| coment | text | NO | | NULL | |
| tes | int(11) | NO | MUL | NULL | |
+----------+---------+------+-----+---------+-------+

ここでMULという文字が出てきて調べてみると、
プライマリーキーの重複を表す文字で、
インデックスを設定したはずなのに
プライマリーキーが設定されてしまいました。

(4)text型のnameフィールドにもやってみます。
text型の場合は、tesフィールドと同じ方法ではできなかったので、
「SQL」画面で
ALTER TABLE `infotable` ADD INDEX (`name`(10))
を実行しました。

mysql> SHOW FIELDS FROM `infotable`;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | text | NO | MUL | NULL | |
| kudamono | text | NO | | NULL | |
| coment | text | NO | | NULL | |
| tes | int(11) | NO | MUL | NULL | |
+----------+---------+------+-----+---------+-------+

text型も同じ状態になってしまいます。
なぜMULになってしまうのでしょうか。
インデックスを追加するにはどうしたらよいでしょうか。

ちなみに
ALTER TABLE `infotable` DROP INDEX `tes`
を実行後はtesのMULは消えます。

MySQLのインデックスキーを設定するとプライマリーキーが設定されてしまいます。

phpMyAdminを使用しています。
localhostページの一番下には、下記2つの注意が発せられています。
■phpMyAdmin の新しいバージョンが提供されています。アップグレードの検討をお奨めします。最新バージョンは 3.5.1 で、2012-05-03 にリリースされています。
■phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。

localhostページの右側にあ...続きを読む

Aベストアンサー

> ここでMULという文字が出てきて調べてみると、
> プライマリーキーの重複を表す文字で、
> インデックスを設定したはずなのに
> プライマリーキーが設定されてしまいました。

これはたぶん勘違いです。MULTI VALUE(多値)の意味でユニークインデックスではないという意味ではないでしょうか。
通常のINDEXは重複値を許すので「MUL」が表示されるのが正常な状態だと思います。

QERROR1062:Duplicate entry.....というエラーが出てしまいました

いつもお世話になります。
データベースからSELECTで抽出したデータを別のテーブルにINSERTするSQLを実行したのですが、
ERROR1062:Duplicate entry.....というエラーが出てしまいました。
お詳しい方がいらっしゃいましたら、アドバイスをいただけませんでしょうか?よろしくお願いいたします。
【実行したSQL】
INSERT INTO tblA (dataA1, dataA2, dataA3, dataA4) SELECT "9001","AA",dataB1,dataB2 FROM tblB WHERE dataB1 = 52

tblAの主キー:dataA1とdataA2
tblBの主キー:dataB1

dataA1とdataA2はtblAの主キーとなっているため、重複してしまうということのようです。tblBの主キーはdataB1であるため、抽出されてくるデータは常に1件なので問題ないと期待していましたが、甘くなかったようです。何か良い方法はないものでしょうか?よろしくお願いいたします。

Aベストアンサー

「ERROR 1062」は、重複データを格納しようとした場合に出力されるエラーです。
既にdataA1='9001'&dataA2='AA'という行が、tblAに格納されているのですよね?

>抽出されてくるデータは常に1件なので問題ないと期待していました

「insert ~ select ~」を実行前に、既に同じデータが格納されているのでは?
あるいはprimary keyの指定が、質問中に記された通りでなく、2件以上検索されているかです。

>何か良い方法はないものでしょうか?

何をするための方法を、聞きたいのかが分かりませんが?

QDBエラーの意味

フォームからDBにデータ挿入しようとすると

Column count doesn't match value count at row 1

というエラーが出てしまいます・・・どういう意味を持ったエラーなんでしょうか?

Aベストアンサー

カラム数と値の数が合わない、と言う事です。簡単な英語なので覚えましょう。
カラム数が4つにもかかわらず、
"INSERT INTO tablename VALUES (1,'hoge',3)"
とやった場合等に出るエラーだと思います。

Qテーブルの最後(最新)のレコードを抽出したい

宜しくお願いします。
PHP MYSQL の組み合わせで使っています

以下のようにして、最後のレコードを取り出したいのですが
まったく違う事をしているのかもしれません。

$sql =" select * from テーブル where フィールド='max' " ;

フィールドはauto_incrementで番号を振っています。
これで最大のつもりなのですが・・・。

他にも、レコードを入れた時間も記録したフィールドがあるのですが
どうしてよいか?判りません。

テーブルの最新のレコードを出したいのです。
**その中の一つのフィールドを取り出すのですが、
  それはうまくいっているみたいです 
  (max の所に数字を入れると表示します)

お手数かけますが、どなたかご教授お願いいたします。

Aベストアンサー

#2回答者です。

MySQL 4.1以前(サブクエリを使えない)なら、以下のような方法が考えられます。

select * from 表名
order by 列名 desc limit 1

Q「Duplicate entry '1' for key 'PRIMARY'」というエラー。

mysql> show fields from do;
+-----------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| parent_id | int(11) | YES | | 0 | |
| data_time | bigint(20) | YES | | NULL | |
| text | text | YES | | NULL | |
+-----------+------------+------+-----+---------+----------------+
というテーブルに、
insert into do values (1,1,1,'kkk');
などと、SQL文を実行すると、
Duplicate entry '1' for key 'PRIMARY'
というエラーが出ます。
これはどういう意味のエラーなのでしょうか?

mysql> show fields from do;
+-----------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| parent_id | int(11) | YES | | 0 | |
| data_time | bigint(20) | YES | | NULL | |
| text | text | YES | | ...続きを読む

Aベストアンサー

id というカラムに既に1という値が入ったレコードがあったりしませんか?
idカラムはプライマリキーに設定されているのでユニークな値を持たせる必要があります。
あと、idカラムはオートインクリメントが設定されているようなので、idカラムに値をあえて入れる必要は無いかもしれません。

QMySQLで改行を含む文の登録のしかた(改行コード

MySQLで改行を含む文を登録したいんですが、改行を改行コードに書き換えて登録したいです。
改行コードはどのように書けばいいですか?

登録したい文:
あいうえお
かきくけこ
さしすせそ

Aベストアンサー

改行コードは¥nで登録すれば良いです。

QERROR 1054 (42S22) 原因不明です

idはintでプライマリー
a5はchar(10)で日本語文字列を格納

データを取得しようとすると#1054エラーがでます。

admin--------
SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`
#1054 - Unknown column 'ã

moniter--------
mysql> SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`;
ERROR 1054 (42S22): Unknown column '縺ゅ>縺・∴縺翫°縺・ in 'where clause'


`あいうえおかき`の日本語に問題があると思い半角データを1行だけ更新しました。
admin--------
SELECT * FROM `aaa` WHERE `a5`=`abcde`
#1054 - Unknown column 'abcde' in 'where clause'

moniter--------
mysql> SELECT * FROM `aaa` WHERE `a5`=`abcde`;
ERROR 1054 (42S22): Unknown column 'abcde' in 'where clause'


admin--------
moniter--------
SELECT * FROM `aaa` WHERE `a5`
SELECT `a5` FROM `aaa` WHERE 1
SELECT * FROM `aaa` WHERE `id`=89584
成功

idはintでプライマリー
a5はchar(10)で日本語文字列を格納

データを取得しようとすると#1054エラーがでます。

admin--------
SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`
#1054 - Unknown column 'ã

moniter--------
mysql> SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`;
ERROR 1054 (42S22): Unknown column '縺ゅ>縺・∴縺翫°縺・ in 'where clause'


`あいうえおかき`の日本語に問題があると思い半角データを1行だけ更新しました。
admin--------
SELECT * FROM `aaa` WHERE `a5`=`abcde`
#1054...続きを読む

Aベストアンサー

> SELECT * FROM `aaa` WHERE `a5`=`abcde`

こうしてみるとか:

SELECT * FROM aaa WHERE a5='abcde'

参考:
http://dev.mysql.com/doc/refman/5.1/ja/identifiers.html
http://dev.mysql.com/doc/refman/5.1/ja/string-syntax.html

Qテーブル作成でエラーが出てきます。

こんにちは。
いつもお世話になっております。

テーブルを作っていたのですが、
ERROR 1060: Duplicate column name
というエラーが帰ってきてしまいます。

予約語とかぶっているフィールド名でもないし、
何が悪いのかわからなくって・・・。

どうかご指導よろしくお願いいたします。

Aベストアンサー

実際にエラーが出た create 構文を示していただければ指摘できると思います。

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Qすべてのテーブル削除

DELETE tbl1,tbl2,tbl3 FROM tbl1,tbl2,tbl3;
DROP TABLE tbl1,tbl2,tbl3 FROM tbl1,tbl2,tbl3;

以外で簡単に複数あるテーブルを削除する方法ってありますでしょうか?

Aベストアンサー

>すべてのテーブル削除

そもそもFROMはいらないでしょ・・・

DROP DATABASE hoge
で親DBを削除してつくりなおすとかありそうですが
ただ、テーブルの削除が頻繁に起こる運用というのは問題では?
ごくたまにしかないならテーブル名を指定して削除するのが妥当


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報