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

My SQL バージョン5.5です。
学校で習っている時に
追加で、 not nullを設定しようと思い、
modify文を色々試して使いましたが Syntaxのエラーが出て、
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' c_pass not null' at line 1
(※c_pass はカラム名です)

change 型名(桁数)を使うと変更できました。
なぜmodifyなどでは追加変更出来なかったのか、原因がわかる方はいらっしゃいますか?
バージョンの問題ですか?

A 回答 (5件)

> modify文を色々試して使いましたが


そういうときはね、その「modify文」も書くほうが良いですよ

この回答への補足

試したのは以下の通りです。

ALTER TABLE テーブル名 MODIFY COLUMN カラム名 型 NOT NULL;
ALTERテーブル名 MODIFY カラム名 NOT NULL;
ALTER TABLE テーブル名MODIFY COLUMN カラム名not null
ALTER TABLE テーブル名 MODIFY COLUMN カラム名 型 NOT NULL
ALTER TABLE テーブル名MODIFY カラム名not null
ALTER TABLE テーブル名MODIFY field カラム名not null
Alter table テーブル名ADD カラム名not null

結構いろんなパターンをやり尽したつもりなんで、あえて書く必要なかったかなあと思って。

補足日時:2013/08/11 22:15
    • good
    • 0

普通に


ALTER TABLE テーブル MODIFY カラム 型 NOT NULL
でやればいけるはず

この回答への補足

そのパターンは無理でした。

補足日時:2013/08/14 13:48
    • good
    • 0

エラーで表示されるsql文の先頭にブランクがあるというのは、全角空白でも入れてたんじゃないの?質問文では半角になってるが、どうだかあやしい。


それとも「型名(桁数)」でいけたと言うことは、桁数入れ忘れのせいかな? varchar やcharは、桁数っていうより文字数必須なんだけど。何型だったんだろう?
おおむね、質問文に書かれてない、または、そのまま入力されてない部分に原因がある。

この回答への補足

>桁数入れ忘れのせいかな?
>文字数必須なんだけど

型名・文字数を入れたら出来ました。ただ、ネットにある情報では桁数やあるいは型名すらない文もありますが、バージョンの違いですか? 
それとブランクとは何のことですか? 

補足日時:2013/08/14 15:10
    • good
    • 0

データ型によって、(length) を省略できるものと出来ないものがあります。


マニュアルをしっかり読んでください。 [] で括られてるのは省略可能、括られてない char(length),varchar(length) は文字数必須。通常「カラム型」という時、(length)を省略出来ない型のときはこれも含めての意味で、「カラム型」といいます。
http://dev.mysql.com/doc/refman/5.1/ja/create-ta …
http://dev.mysql.com/doc/refman/5.1/ja/alter-tab …

modify のときは、
alter table MODIFY [COLUMN] column_definition
だからカラム型省略不可。カラム型不要なのは、drop の時

ブランク:空白文字と書かないと通じませんか。。。
>near ' c_pass not null
' の次に半角空白があるけど、質問入力時に入れてしまっただけなのか、この文字にエラーの元があったのか(実は全角空白だったかも)と考えただけです。

この回答への補足

難しいマニュアルですね。
省略というキーワードでページ検索してみましたが、ありませんでした。どのあたりにこの話が載っているでしょうか?

補足日時:2013/08/24 22:47
    • good
    • 0

#2です



>そのパターンは無理でした。

なにか読み間違えていると思いますが・・・
もしかしたら5.5でできないのでしょうか?

以下ためしてみてください。

create table hoge (id int not null,data int null);
insert into hoge values(1,100),(2,null),(3,200);
alter table hoge modify data int not null;

nullだったid=2のdataは0になるはずです
    • good
    • 0
この回答へのお礼

亀レスすみませんです。出来ました。

お礼日時:2013/08/24 22:37

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