2

phpMyAdmin を使用して、いくつかの NOT NULL 列を含むテーブルを作成しました。

CREATE TABLE `TEST` (`ID` INT PRIMARY KEY AUTO_INCREMENT, 
                     `Firstname` VARCHAR(20) NOT NULL, 
                     `Lastname` VARCHAR(20) NOT NULL)

INSERT 操作には問題ありません。データベースは NULL フィールドを正しく設定できません。

INSERT INTO `TEST`(`Firstname`, `Lastname`) VALUES ("Peter", null)

#1048 - Column 'Lastname' cannot be null

受け入れられたものは次のとおりです。

INSERT INTO `TEST`(`Firstname`, `Lastname`) VALUES ("Peter", "Smith")

1 row inserted. 
Inserted row id: 1 (Query took 0.0004 sec)

しかし、NULL 以外のフィールドを持つレコードを正常に作成した後、データベースはこれらのフィールドを NULL に更新することを許可します。

UPDATE `TEST` SET `Lastname`=NULL WHERE `ID` = 1

1 row affected. (Query took 0.0006 sec)

「NULL」と「NULL」も試しましたが、データベースはそれらをフィールドに文字列として入れました。

私はこの問題について本当に混乱しています。これは phpMyAdmin のバグですか、それとも何か間違っていますか?

4

2 に答える 2

0

phpMyAdmin を介して SQL モードを変更する権限があるかもしれません。phpMyAdmin のホーム (開始) ページに移動し、[変数] をクリックして、フィルターに「SQL モード」と入力します。次に、疑問符を介していくつかの説明にアクセスできます。この行をクリックすると、SQL モードの値を編集して保存できます。

ただし、これはテストのみを目的としており、サーバーが再起動されると設定は元の値に戻ります。したがって、構成ファイルを変更する必要があります。

于 2013-09-02T16:05:27.033 に答える
0

インストール時に SQL_MODE を strict に設定しないでください。

問題

SET SQL_MODE='STRICT_ALL_TABLES'

または追加

SQL_MODE='STRICT_ALL_TABLES'

[mysqld]あなたの下にmy.cnf

my.cnf を見つけるには、MySQL 構成ファイルを調べます。C:\xampp\mysql\bin\my.ini.

そのファイルの上部には、いくつかのコメントがあります。

# You can copy this file to
# C:/xampp/mysql/bin/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is C:/xampp/mysql/data) or
# ~/.my.cnf to set user-specific options.

そこには、ファイルの場所が示されていmy.cnfます。

必要に応じて、mysql を再起動します。

于 2013-09-02T01:19:24.540 に答える