• ベストアンサー
  • 困ってます

modifyでnot nullを追加出来ない

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などでは追加変更出来なかったのか、原因がわかる方はいらっしゃいますか? バージョンの問題ですか?

共感・応援の気持ちを伝えよう!

  • MySQL
  • 回答数5
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.5
  • yambejp
  • ベストアンサー率51% (3827/7415)

#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になるはずです

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

その他の回答 (4)

  • 回答No.4

データ型によって、(length) を省略できるものと出来ないものがあります。 マニュアルをしっかり読んでください。 [] で括られてるのは省略可能、括られてない char(length),varchar(length) は文字数必須。通常「カラム型」という時、(length)を省略出来ない型のときはこれも含めての意味で、「カラム型」といいます。 http://dev.mysql.com/doc/refman/5.1/ja/create-table.html http://dev.mysql.com/doc/refman/5.1/ja/alter-table.html modify のときは、 alter table MODIFY [COLUMN] column_definition だからカラム型省略不可。カラム型不要なのは、drop の時 ブランク:空白文字と書かないと通じませんか。。。 >near ' c_pass not null ' の次に半角空白があるけど、質問入力時に入れてしまっただけなのか、この文字にエラーの元があったのか(実は全角空白だったかも)と考えただけです。

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.3

エラーで表示されるsql文の先頭にブランクがあるというのは、全角空白でも入れてたんじゃないの?質問文では半角になってるが、どうだかあやしい。 それとも「型名(桁数)」でいけたと言うことは、桁数入れ忘れのせいかな? varchar やcharは、桁数っていうより文字数必須なんだけど。何型だったんだろう? おおむね、質問文に書かれてない、または、そのまま入力されてない部分に原因がある。

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.2
  • yambejp
  • ベストアンサー率51% (3827/7415)

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.1
  • bin-chan
  • ベストアンサー率33% (1403/4213)

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

関連するQ&A

  • SQLエラーの意味を教えてください

    自PCで開発しています。 テーブルを作成できたようなのですが、SQLを走らせようと思うとエラーがでてしまいます。 #1064 - 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 ')' at line 8 CREATE TABLE linkbook_juku( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT , juku VARCHAR( 255 ) NOT NULL , address VARCHAR( 255 ) NOT NULL , description TEXT, pwd INT( 2 ) , MODIFY DATE NOT NULL , ); このSQLでなにが間違っているか見当がつきません。 ご存知の方いたらご教授頂けたら幸いです。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PostgreSQLの「not null」制約の追加

    こんにちは。いつもお世話になります。 PostgreSQLのversion7.2.8で、「not null」制約の追加、削除の方法をおたずねします。よろしくお願いします。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET NOT NULL; で試したところ、syntaxエラー(構文エラー)で失敗。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP NOT NULL; で試してみても、同じくsyntaxエラーです。 version7.2.8が原因でしょうか? また、version7.2.8でも「not null」制約の追加、削除が できる他の方法はありますでしょうか? テーブルを作り直さずに、 既存のテーブルのカラムへの制約の追加、削除をしようとしています。 よろしくお願いします。

  • eclipse3.2,DBedit1.0.3,がうまくいかない

    eclipse3.2 DBedit1.0.3 がうまくいかないです。 接続まではできるのですが コマンドプロンプトでmysqlユーザーでは テーブルが作成されていているのが確認できるのですが DBEDIT上ではテーブルの一覧が表示されません。 新しくテーブルを作成しようとすると 下のエラーとなってしまいます。 どなたかわかるかたがいらっしゃいましたらよろしくお願いします。 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right... dbedit.core.DataException: Couldn't execute query:create table 123 (newColumn_0 BIGINT not null,newColumn_1 BIGINT not null) com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: 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 '123 (newColumn_0 BIGINT not null,newColumn_1 BIGINT not null)' at line 1

  • MySQLのエラー

    はじめまして。 MySQLでエラーが出てしまい改善するのに困っています。 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... とでます。 「よくわかるPHPの教科書(P202)」という本を見ながらすすめているのですが、 このエラーが言っているのは、 「サーバーのバージョンが本と異なるから、あなたのサーバーにあわせたコマンド入力をしなさい」 ってことなのでしょうか? よろしくお願い致します。

  • eclipseでDB(MySQL)に接続

    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 'NULLL' at line 3 eclipseのデータベース開発を行ったところ上記のエラーがでました。 まったっくわからずpcの前でかたっまってます。 どなたかご指導お願いいたします。

  • SQLでTableが作れないlol

    show databases; と入力 自分のデータベースを use me; と入力 show tables;  と入力してからが問題なのですが・・・。 テーブルを作りたいのに、CREATEをしても作れないんですorz ↓↓入力した内容は以下のとおりです↓↓ CREATE TABLE cake ( code char(3), name varchar(10) NOT NULL, tanka char(8), from varchar(20) NOT NULL , drink varchar(10) NOT NULL , PRIMARY KEY (code) ); と、入力するとエラーで・・・ ERROR 1064 (42000): 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 'from varchar(20) NOT NULL, drink varchar(10) NOT NULL, PRIMARY KEY (code) )' at line 5 と出てくるのですが、よくわかりません。 昨日までは作れていたのになぜかわからず質問してみました。 code char(3) , を code int(3), としてもできませんでした。 これから作業で使うので、困ってます><! ご回答のほどよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • かねやんMySQLAdmin1.43

    WinXpでmysqlを勉強中です。 かねやんMySQLAdmin1.43を使って、Sql発行を押し下のように書き込んで実行するとエラーがでます。 CREATE TABLE hotelmember ( hotel_name varchar(40) NOT NULL, com_name varchar(40) NOT NULL, charge_name varchar(40) NOT NULL, id varchar(40) NOT NULL, pass varchar(40) NOT NULL, mail varchar(40) NOT NULL, zip varchar(40) NOT NULL, add varchar(40) NOT NULL, tel varchar(40) NOT NULL, url varchar(40) NOT NULL, memo varchar(40) NOT NULL, PRIMARY KEY ( id ) ) エラー文 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 'add varchar(40) NOT NULL,tel varchar(40) NOT NULL, そこで add varchar(40) NOT NULL, tel varchar(40) NOT NULL, url varchar(40) NOT NULL, memo varchar(40) NOT NULL, を削除するとうまくテーブルが作成されます。 なにが悪いんでしょうか?

    • ベストアンサー
    • MySQL
  • UPDATE文のWHERE句について

    if(!is_null($_GET['sid'])) $sid = (int)$_GET['sid']; $sql = "UPDATE ideamemo_table SET update_date = '$update' WHERE sid = $sid;"; mysql_query($sql, $con) or die(mysql_error()); と書いた時に、下記のようなエラーが表示されます。 どこがどう間違っているのでしょうか。 $sidを、シングルクォーテーションでくくっても、エラーが出ます。 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 'WHERE sid = ''' at line 1

  • MySQLのエラーコード1064の見方

    以下のエラーが出ました。 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 '?') + 1).split('&'); for(var i = 0; i < hashes.length; i++) { hash =' at line 1 ) You~nearまではいつもどおりなので分かるのですが、その後が何やらよく分からないので、見方を教えていただけないでしょうか? なお、SQL文は以下の通りです。 select カラム名1 from テーブル名 where カラム名2=$i

    • ベストアンサー
    • MySQL
  • MySQLでエラーがでます

    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 '"8cb2237d0679ca88db6464eac60da96345513964", created"2011-10-05 15:16:04"' at line 1 PHPをブラウザで開いて動作確認すると上記のようにエラーがでてしまいます。 dbはこんな感じで作りました。 CREATE TABLE `class_orms`.`members` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `name` VARCHAR( 255 ) NOT NULL , `email` VARCHAR( 255 ) NOT NULL , `password` VARCHAR( 100 ) NOT NULL , `created` DATETIME NOT NULL , `modified` TIMESTAMP NOT NULL ) ENGINE = MYISAM ; CREATE TABLE `class_orms`.`posts` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `message` TEXT NOT NULL , `member_id` INT NOT NULL , `reply_post_id` INT NOT NULL , `created` DATETIME NOT NULL , `modified` TIMESTAMP NOT NULL ) ENGINE = MYISAM ; SQL側の1行目でエラーがあるということなのでしょうか? どなたか回答よろしくお願いします。 動作環境------------------- Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 phpMyAdmin バージョン情報: 3.2.4

    • ベストアンサー
    • MySQL