• 締切済み

Mysql DATE型のDEFAULT値

初心者ですが、よろしくお願いします。 Mysqlでテーブルを作成して、カラムにDATE型を指定するとDEFAULT値が設定できません、、、。 これはMysqlの仕様なのでしょうか? ちなみに、TIMESTAMP型だと、'DEFAULT CURRENT_TIMESTAMP'でDEFAULT設定できます、、。 -- クエリ CREATE TABLE test ( column_name DATE NOT NULL DEFAULT CURRENT_DATE ); >> エラー 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 'CURRENT_DATE)' at line 1 Mysql::ABも調べたのですが、よく分かりませんでした。 よろしくお願いします。 MySQLバージョン 5.0.41

  • MySQL
  • 回答数1
  • ありがとう数2

みんなの回答

回答No.1

MySQLのマニュアルに、記載があります。 CURRENT_DATE等を、DEFAULTに設定することはできません。 TIMESTAMP型に関しては、MySQLが自動的に日時を設定する特別なデータ型なので、指定があってもsyntaxエラーにしていないのでしょう。 「DEFAULT 値は定数でなければならず、関数や式を使用することはできない。 DEFAULT 値が指定されていない場合、そのカラムには、次の方法で、MySQL によって DEFAULT 値が自動的に割り当てられる。 値として NULL を取れるカラムの場合、デフォルト値は NULL になる。 NOT NULL として宣言されているカラムの場合、デフォルト値はそれぞれのカラム型によって決まる。 AUTO_INCREMENT 属性を持つと宣言されていない数値型カラムの場合、デフォルトは 0。AUTO_INCREMENT カラムの場合、デフォルト値は連続値の次の値になる。 TIMESTAMP 型以外の日付と時刻型の場合、デフォルトはその型に対応するゼロ値。テーブル内の最初の TIMESTAMP 型カラムのデフォルト値は、現在の日時になる。 See 項6.2.2. 「日付と時刻型」。 ENUM 型以外の文字列型の場合、デフォルト値は空の文字列。ENUM の場合、デフォルト値は最初の列挙値になる。  デフォルト値は定数でなければならない。したがって、日付カラムのデフォルト値として、NOW() や CURRENT_DATE などの関数を設定することはできない。 」

参考URL:
http://dev.mysql.com/doc/refman/4.1/ja/create-table.html

関連するQ&A

  • テーブルが作成できない

    CREATE TABLE media ( id INT DEFAULT 0 primary key, media_name VARCHAR DEFAULT '', others text DEFAULT '', regis_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, update_date TIMESTAMP ); をMySQL 5.0.77で実行したところ 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 ' regis_date TIMESTAMP, update_date )' at line 3 のエラーが出てきてしまいます しかしMySQLを使い始めたばかりで今一理解が出来ず また、 text DEFAULT '' を使った他のテーブルは作成できています どこがおかしいのか教えていただけませんでしょうか、お願いします

    • ベストアンサー
    • MySQL
  • 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)」という本を見ながらすすめているのですが、 このエラーが言っているのは、 「サーバーのバージョンが本と異なるから、あなたのサーバーにあわせたコマンド入力をしなさい」 ってことなのでしょうか? よろしくお願い致します。

  • 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
  • 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の前でかたっまってます。 どなたかご指導お願いいたします。

  • Mysql どこに間違いがありますか?

    define( 'DB_NAME', 'MyDatabaseName' ); これがエラーになります。 どうしてでしょうか? ご回答のほど、よろしくお願い申し上げます。 尚、ダブルクォーテーションマークにしてもエラーになりました。 mysql> define( 'DB_NAME', 'MyDatabaseName' ); 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 'define( 'DB_NAME', 'MyDatabaseName' )' at line 1

    • ベストアンサー
    • MySQL
  • MySQLでのエラー

    MySQLのコマンド画面で、データベースを作成しています。 そこで、WEB上を参考にして打ち込んでみたところ ERROR 1064: You have an error in your SQL syntax. Check the manual that corresp onds to your MySQL server version for the right syntax to use near ')' at line 1 とでます。 僕が打ち込んだ文は以下のとおりです。 mysql> create database odinms; です。 間違いなどがあればご指摘お願いします。

  • テーブル作成時のエラーについて(Mysql 5.1.30)

    SQLを勉強始めたばかりの超初心者です。 先日勉強のため、Mysql ver.5.1.30をDLしてインストールしました。 名簿テーブルを作成しようとMySQL Command Line Clientから以下のコマンドを入力しました。 mysql> create table 名簿( -> 姓 varchar(12), -> 名 varchar(12), -> 生年月日 date); 実行すると以下のエラーが表示されます。 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 '名簿( 姓 varchar(12), 名 varchar(12), 生年月日 date)' at line 1 これは何が間違っているのでしょうか? テキストどおりに入力しているのですが、テーブルが作成できないため次に進めません。 周りに詳しいものもいないため困っています。 ぜひご教授よろしくお願いします。

    • ベストアンサー
    • MySQL
  • コマンドからDB名に"-"を使うには?

    DB名に"-"を使いたいと思います。 ところが、コマンドから入れると、下記のようにエラーになってしまいます。 mysql> create database a-test; 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 '-test ' at line 1 しかしながら、phpMyAdminの方からは、作成することが出来ます。 コマンドの方からa-testと言ったDBを作成するのにはどうしたらいいのでしょうか? 尚、バージョンは5.5.27です。 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • JSPからMySQLへアクセスできません・・

    JSPでMySQLにアクセスしたいのですが、下記のエラーが解決できません・・・ Exception名等で検索をかけても、非常に件数が少なくて困っています。 エラーはかなり行数が多いので先頭から少し載せてみます。 com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Server connection failure during transaction. Due to underlying exception: '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 ' 醇A 醇A ' at line 1'. ** BEGIN NESTED EXCEPTION ** com.mysql.jdbc.exceptions.MySQLSyntaxErrorException MESSAGE: 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 ' 醇A 醇A ' at line 1 STACKTRACE: 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 ' 醇A 醇A ' at line 1 at 環境はWINDOWSXP、TOMCAT5,5、MySQL4.1です。 学校の課題でJSPとMySQLを用いたWebアプリケーションを構築しており、 時間が足りないので、家でも開発を進めようと思ったのですが、先に進めません。 Webアプリケーションの構造はtomcatディレクトリ/webapps/website/内に、regist.jsp、regist.html、login.jsp、login.htmlが、 ./WEB-INF/classes/myAuth/内にAuthModule.javaというファイルがあり、jspからAuthModuleをimportして使用しています。 学校のPC環境はVineLinuxで、tomcatのversionは不明です、MySQLは4.0でした。 学校のPCではうまく実行でき、データベースにアクセスできることが確認できています。 非常にエラーの部分が見づらいとは思いますが、なんとか解決の糸口を教えていただけませんか・・

    • ベストアンサー
    • Java
  • mysql_queryでのdelimiterの設定について

    PHP5.2.4、mysql5.1.33を使用しています。 MySQLにおいてdelimiterを変えようと思ったのですが、 コマンドプロンプトからは「delimiter //」で「//」に変えることができたのですが、 PHPでmysql_queryで $rs = mysql_query("delimiter //", $dbname); if (!$rs) { print mysql_errno($dbname).":".mysql_error()."<br>\n"; exit(); } として実行すると、 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 'delimiter //' at line 1 というエラーが出てしまいます・・・ おそらくですが設定したと同時にデミリタの「;」が「//」に変わってて デミリタが発見できずにこのようなエラーが出てるのだと推測するのですが、 実際にはどのような現象なのでしょうか?また解決方法もお願いします。

    • ベストアンサー
    • PHP