アプリ版:「スタンプのみでお礼する」機能のリリースについて

バージョンはmysql-4.0.14b-winです。
+ mysql-connector-java-3.0.8-stable-bin

昔、このsqlを実行したときはうまくいっていたのですが
最近実行すると以下のようなエラーがでます
バージョンのちがいがあるのでしょうか?
unique制約で引っかかっているみたいです。

<実行>
+----------------------------------------------+
| 1.MYSQLで以下のようにテーブルを作成しました。|
+----------------------------------------------+
C:\>mysql\bin\mysqladmin -u root -p CREATE user
Enter password: root
C:\>mysql\bin\mysql -u root -p user < c:\syain.sql
Enter password: root
<問題点>
以下のようなエラーがでましたERROR 1170 at line 8: BLOB column 'username' used in key specification without a
key length

<実行したsql文>
syain.sqlの内容は以下のとおりです。--
-- Host: localhost Database: user
---------------------------------------------------------
--
-- Table structure for table 'table1'
--

create table table1 (    
id integer primary key,
username text not null unique,
password text not null,
idnumber text not null,
department text not null,
mail text not null,
extension text not null);

--
-- Dumping data for table 'table1'
--

--INSERT INTO table1 VALUES (1,'Peter','123456','1201','情報システム部','peter@it.planet.com','101');
INSERT INTO table1 VALUES (1,'Robert','abcdef','1202','情報システム部','robert@it.planet.com','102');
INSERT INTO table1 VALUES (1,'Mike','abcdef','1203','企画部','mike@pl.planet.com','201');
INSERT INTO table1 VALUES (1,'Celline','abcdef','1204','営業部','celine@mk.planet.com','301');
INSERT INTO table1 VALUES (1,'Akira','abcdef','1205','技術部','akira@tec.planet.com','401');
INSERT INTO table1 VALUES (1,'Eric','abcdef','1206','経理部','eric@ac.planet.com','501');
INSERT INTO table1 VALUES (1,'Rika','abcdef','1207','営業部','rika@mk.planet.com','302');
INSERT INTO table1 VALUES (1,'Diana','abcdef','1208','営業部','diana@mk.planet.com','303');
INSERT INTO table1 VALUES (1,'Britney','abcdef','1209','企画部','britney@pl.planet.com','202');
INSERT INTO table1 VALUES (1,'Takuya','abcdef','1210','技術部','takuya@tec.planet.com','402');

ご教授よろしくお願いします

A 回答 (3件)

MySQLは門外漢ですが・・・


エラーメッセージによると
「列"username"がキー長の設定無しにキーに指定されていますよ」
ということでしょうか?
usernameをtextではなくchar(15)など固定長にしてみてはいかがでしょうか?
    • good
    • 0
この回答へのお礼

usernameをtextではなくchar(15)など固定長にしてみたら
うまくいきました。
助かりました。ありがとうございました。
感謝しています。また質問の機会がありましたらそのときは
よろしくお願いします。

お礼日時:2009/02/27 22:58

#1さんの指摘があるようにtextはunique属性が付加できません


そもそもSQLにおいてtextタイプのフィールドはインデックスも
きかず、スピードが期待できないためめったなことでは
使わない方がよいでしょう。
基本は、charもしくはvarcharです。
    • good
    • 0

MySQLでは、text型の扱いにいろいろ制限があったものを、「長さを指定する」ことで可能にしたと記憶しています。


なお、他の方も指摘していますが、text型の使用は最小限にしましょう。
    • good
    • 0

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