質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

1806閲覧

MySQLでデータベースを作りたいのですが、よくわからない内容のエラーが出ます。

chimo

総合スコア55

MySQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

1グッド

1クリップ

投稿2020/03/12 04:05

編集2020/03/12 06:13

MySQLになれるための練習として以下の簡単なデータベースを作りました(名前は歴代のペット名です...)。

MySQL

1########EX_TABLE1############# 2CREATE TABLE EX_TABLE1 ( 3 ID INT NOT NULL PRIMARY KEY COMMENT '生徒ID', 4 NAME VARCHAR NOT NULL COMMENT '名前', 5 GENDER CHAR NOT NULL COMMENT '性別', 6 ENROLLEMENT DATE NOT NULL COMMENT '入校年', 7 MAJOR VARCHAR NOT NULL COMMENT '専攻', 8 REGIST_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '登録日時' 9) ; 10 11########EX_TABLE1へレコードを挿入######## 12INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) 13 VALUES(01, 'いまる', 'F' , 2007 , '英文学部' , NULL ) ; 14INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) 15 VALUES(02, 'まろん', 'F' , 2009 , '教育学部' , NULL ) ; 16INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) 17 VALUES(03, 'てやん', 'F' , 2010 , '薬学部' , NULL ) ; 18INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) 19 VALUES(04, 'ちもたん', 'F' , 2016 , '経済学部' , NULL ) ; 20INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) 21 VALUES(05, 'きゃん', 'F' , 2018 , '文化情報学部', NULL ) ; 22

これを実行すると以下のようなエラー内容が出てきてしまいました。
【エラー】----------------------------------------
SQL : #42000You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL COMMENT '蜷榊燕',
GENDER CHAR NOT NULL COMMENT '諤ァ' at line 4
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
しかし文字化けしているのか何を指摘されているのかよくわからないし、at line 4 とかいているので一応四行目のコードを確認しましたが、四行目のNAMEのコードもこれといって間違っている部分がないように思えます。何が間違っていて、どのようにすればデータベースを実行できますか。

【追記】
Windows10
コマンドプロンプト
MySQL version 2.14.5
パソコン素人すぎて申し訳ないです。多分追記依頼の内容に沿ってないような追記をしていしまってるとおもいますが...

【再追記】
アドバイス受けて以下のようにコードを書きなおしましたがまだエラーが出てしまいます…。

MySQL

1########EX_TABLE1############# 2CREATE TABLE EX_TABLE1 ( 3 ID INT NOT NULL PRIMARY KEY COMMENT 'STUDENT_ID', 4 NAME VARCHAR(10) NOT NULL COMMENT 'NAME', 5 GENDER CHAR(1) NOT NULL COMMENT 'GENDER', 6 ENROLLEMENT YEAR NOT NULL COMMENT 'ENROLLEMENT', 7 MAJOR VARCHAR(10) NOT NULL COMMENT 'MAJOR', 8 REGIST_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'TIMESTAMP' 9) ; 10 11########EX_TABLE1へレコードを挿入######## 12INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) 13 VALUES(01, 'IMARU', 'F' , 2007 , '英文学部' , NULL ) ; 14INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) 15 VALUES(02, 'MARON', 'F' , 2009 , '教育学部' , NULL ) ; 16INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) 17 VALUES(03, 'TEYAN', 'F' , 2010 , '薬学部' , NULL ) ; 18INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) 19 VALUES(04, 'CHIMOTAN', 'F' , 2016 , '経済学部' , NULL ) ; 20INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) 21 VALUES(05, 'CANTAN', 'F' , 2018 , '文化情報学部', NULL ) ; 22 23

【エラー】
Incorrect data value: '2007' for column 'ENROLLEMENT' at row 1
########EX_TABLE1#############
CREATE TABLE EX_TABLE1 (
ID INT NOT NULL PRIMARY KEY COMMENT 'STUDENT_ID',
NAME VARCHAR(10) NOT NULL COMMENT 'NAME',
GENDER CHAR(1) NOT NULL COMMENT 'GENDER',
ENROLLEMENT YEAR NOT NULL COMMENT 'ENROLLEMENT',
MAJOR VARCHAR(10) NOT NULL COMMENT 'MAJOR',
REGIST_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'TIMESTAMP'
) ;

########EX_TABLE1へレコードを挿入########
INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP)
VALUES(01, 'IMARU', 'F' , 2007 , '英文学部' , NULL ) ;
INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP)
VALUES(02, 'MARON', 'F' , 2009 , '教育学部' , NULL ) ;
INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP)
VALUES(03, 'TEYAN', 'F' , 2010 , '薬学部' , NULL ) ;
INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP)
VALUES(04, 'CHIMOTAN', 'F' , 2016 , '経済学部' , NULL ) ;
INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP)
VALUES(05, 'CANTAN', 'F' , 2018 , '文化情報学部', NULL ) ;

【エラー】
Incorrect data value:'2007' for column 'ENROLLEMENT' at row1

もうなにをどうして良いか。。。お手上げです。。。

【再々追記】
このあとデータのYEAR型をDATE型にかえて10102017...みたいな感じで全部打ち直したらデータがとおりました。。。一応YEAR型もちゃんと調べて使ったのですがみなさんから見てYEAR型の使い方まちがっていますでしょうか?ご指摘あればよろしくお願いいたします。

s.k👍を押しています

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

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

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

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

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

tanat

2020/03/12 04:10

使用しているOS コンソール(コマンドプロンプト等) MySQLのバージョン によって対処方法が変わってきますので、そのあたりの情報の追記をお願いします。 また、teratail内で MySQL 文字化け で検索してみて対応を試してみてください。
guest

回答3

0

MySQLでVARCHAR列を作成する場合、長さの指定が必須です。VARCHAR(50)のように指定してください。

投稿2020/03/12 04:09

maisumakun

総合スコア145201

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

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

chimo

2020/03/12 04:23

コメントありがとうございます!アドバイスの通りやってみましたが、別のエラーがでてしまいました… 以下のようにコードを変更しました。 【コード】 ########EX_TABLE1############# CREATE TABLE EX_TABLE1 ( ID INT NOT NULL PRIMARY KEY COMMENT 'STUDENT_ID', NAME VARCHAR(10) NOT NULL COMMENT 'NAME', GENDER CHAR(1) NOT NULL COMMENT 'GENDER', ENROLLEMENT DATE NOT NULL COMMENT 'ENROLLEMENT', MAJOR VARCHAR NOT NULL COMMENT 'MAJOR', REGIST_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'TIMESTAMP' ) ; ########EX_TABLE1へレコードを挿入######## INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) VALUES(01, 'IMARU', 'F' , 2007 , '英文学部' , NULL ) ; INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) VALUES(02, 'MARON', 'F' , 2009 , '教育学部' , NULL ) ; INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) VALUES(03, 'TEYAN', 'F' , 2010 , '薬学部' , NULL ) ; INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) VALUES(04, 'CHIMOTAN', 'F' , 2016 , '経済学部' , NULL ) ; INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) VALUES(05, 'CANTAN', 'F' , 2018 , '文化情報学部', NULL ) ; すると以下のようなエラーが出てしまいました。 【エラー】 SQL : #42000You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL COMMENT 'MAJOR', REGIST_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CU' at line 7 REGIST_TIMESTAMPにNOT NULLと入力したのが駄目だったんでしょうか??
yambejp

2020/03/12 04:36

MAJOR VARCHAR に数値が指定されてませんけど?
chimo

2020/03/12 06:26

>yambejpさん コメントありがとうございます。 その点も修正いたしましたがまだエラーがでてしまいます...。
guest

0

REGIST_TIMESTAMPの入力値をNULLにしている箇所を
CURRENT_TIMESTAMPに変えてください

投稿2020/03/12 06:33

yambejp

総合スコア114921

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

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

chimo

2020/03/12 06:41

やってみましたがYEAR型である限りうまくいきませんでした...バージョンによってはYEAR型が使えないこともあるのでしょうか...
yambejp

2020/03/12 06:45

まぁYEAR型がどうしても必要だとは思えませんが year(4)にしてもダメですかね?
guest

0

ベストアンサー

INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP)
VALUES(01, 'IMARU', 'F' , 2007 , '英文学部' , NULL ) ;
【エラー】
Incorrect data value:'2007' for column 'ENROLLEMENT' at row1

ENROLLEMENTをYEAR型ではなくDATE型で定義しているからでは?

投稿2020/03/12 06:20

yodel

総合スコア508

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

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

chimo

2020/03/12 06:25

【コード】 #######EX_TABLE1############# CREATE TABLE EX_TABLE1 ( ID INT NOT NULL PRIMARY KEY COMMENT 'STUDENT_ID', NAME VARCHAR(10) NOT NULL COMMENT 'NAME', GENDER CHAR(1) NOT NULL COMMENT 'GENDER', ENROLLEMENT YEAR NOT NULL COMMENT 'ENROLLEMENT', MAJOR VARCHAR(10) NOT NULL COMMENT 'MAJOR', REGIST_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'TIMESTAMP' ) ; ########EX_TABLE1へレコードを挿入######## INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) VALUES(01, 'IMARU', 'F' , 2007 , '英文学部' , NULL ) ; INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) VALUES(02, 'MARON', 'F' , 2009 , '教育学部' , NULL ) ; INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) VALUES(03, 'TEYAN', 'F' , 2010 , '薬学部' , NULL ) ; INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) VALUES(04, 'CHIMOTAN', 'F' , 2016 , '経済学部' , NULL ) ; INSERT INTO EX_TABLE1 (ID, NAME, GENDER, ENROLLEMENT, MAJOR, REGIST_TIMESTAMP) VALUES(05, 'CANTAN', 'F' , 2018 , '文化情報学部', NULL ) ; 【エラー】 Incorrect data value:'2007' for column 'ENROLLEMENT' at row1 となるので、YEARで定義してもこのエラーがでてしまいます...
yodel

2020/03/12 06:45 編集

こちらの環境だと上記のSQLは通りますね。 TABLEを作り直しても同じメッセージが出ますか?(既に作ってあるテーブル定義のままとかでは?)
chimo

2020/03/12 07:36

そうですか!正直TABLE作り直すの野茂どうやっていいかわからなくて...。さっきから書きなおしてはまた実行して(緑の▶のボタンおして)を繰り返してるのですが、書きなおした変更内容も反映されてないように思えるので、もう一度最初からやり直そうと考えてもいるのですが、テーブルを消すこともできなくて...。コマンドプロンプト上でshow tableからdrop tableするのが調べたらでてきたのでやろうとしたのですが、どのユーザー名で入ってもshow tableでテーブルさえ出てきてくれませんでした...。MySQLお手上げです...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問