[解決済み】MySQLでテキストカラムにデフォルト値を設定できないのはなぜですか?
質問
テーブルに TEXT カラムを作成し、MySQL でそれにデフォルト値を与えようとすると、エラーが発生します(少なくとも Windows で)。テキストカラムがデフォルト値を持つべきでない理由が見当たりません。MySQL のドキュメントにも説明がありません。私には非論理的に思えます(そして、デフォルト値が欲しいので、多少イライラします!)。なぜこれが許されないのか、どなたかご存知ですか?
解決方法は?
Windows の MySQL v5 ではエラーが発生するが、Linux やその他のバージョンでは警告が表示されるだけである。 これは修正する必要がある。 WTF?
また、MySQL Bugtracker のバグ#19498 として、これを修正しようとする試みも参照してください。
ブライス・ネスビット 2008年4月4日 16時36分
MS Windows では、"no DEFAULT" ルールはエラーになりますが、他のプラットフォームでは警告になることがよくあります。バグではありませんが、甘いプラットフォームでコードを書き、後で厳しいプラットフォームで実行すると、これに引っかかる可能性があります。
個人的には、これはバグと捉えています。 BLOB/TEXT column can't have a default value"で検索すると、Googleで約2,940件の検索結果が表示されます。 そのほとんどは、あるシステムでは動作したが他のシステムでは動作しなかったDBスクリプトをインストールしようとしたときの非互換性に関する報告です。
私は今、あるクライアントのために修正中のウェブアプリケーションで同じ問題に遭遇しており、元々は Linux MySQL v5.0.83-log でデプロイされていました。 私はWindows MySQL v5.1.41を実行しています。 最新版のphpMyAdminを使用してデータベースを抽出しようとしても、問題のテキストカラムのデフォルトが報告されません。それなのに、Windowsで挿入を実行しようとすると(Linuxの展開ではうまくいくのですが)、ABCカラムにデフォルトがないというエラーが表示されます。 明らかなデフォルト(そのカラムのユニークな値の選択に基づく)を使用してローカルにテーブルを再作成しようとすると、結局、非常に有用な BLOB/TEXTカラムはデフォルト値を持つことができません。 .
繰り返しになりますが、プラットフォーム間の基本的な互換性を維持しないことは容認できず、バグとなります。
MySQL 5 (Windows)でストリクトモードを無効にする方法。
-
my.iniを編集し、次の行を探します。
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
-
で置き換える。
sql_mode='MYSQL40'
-
MySQLサービスを再起動します(mysql5と仮定)。
net stop mysql5 net start mysql5
root/admin 権限がある場合は、以下のように実行することができます。
mysql_query("SET @@global.sql_mode='MYSQL40'");
関連
-
MySQL XAが分散型トランザクションを実装する方法を1記事にまとめました。
-
Mysqlのソート機能の詳細
-
[解決済み】MySQLのエラーコードです。MySQL WorkbenchでUPDATE中に1175のエラーが発生しました。
-
SQLステートメントエラーです。オペランドには 1 つのカラムを含める必要があります [括弧を追加せずに複数のフィールドをクエリする
-
Mysql がエラー 1241 を報告 オペランドは 1 つのカラムを含む必要があります。
-
[解決済み] MySQL で特定のカラム名を持つすべてのテーブルを見つけるにはどうすればよいですか?
-
[解決済み] MySQLです。大きなVARCHARとTEXTの比較?
-
[解決済み] MYSQLでMAX(列の値)、PARTITIONで別の列で行を選択するにはどうすればよいですか?
-
[解決済み] 既存のカラムにデフォルト値を設定する方法
-
[解決済み】MySQLのDatetimeカラムにデフォルト値を設定する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySqlの整数インデックスと文字列インデックスの失敗または暗黙の変換問題
-
MySQLデータ型の詳細
-
MysqlからElasticsearchにデータを同期させる方法を説明します。
-
mysqlインデックスが長すぎる特殊なキーが長すぎる解決策
-
[解決済み] [GROUP BY句に含まれるか、集約関数で使用される必要があります。
-
MySQLにおけるvarchar型とchar型の違い
-
SQLステートメントエラーです。オペランドには 1 つのカラムを含める必要があります [括弧を追加せずに複数のフィールドをクエリする
-
[解決済み] mysqladminのフラッシュホストでブロックを解除する方法
-
[解決済み] MySQLのVARCHARとTEXTの違い【重複】について
-
[解決済み] URLに最適なデータベースフィールドの種類