2017-05-31 5 views
0

これはバグではなく機能かもしれないので、私はMariaDBのJiraの代わりにそれをSOに含めると考えました。Insertでのデフォルト値の自動キャスト

昨日、HomebrewのMariaDBのインストールを10.1.23から10.2.6に更新しました。私のすべての選択はまだ正常に動作していますが、今の私のレガシーアプリケーションでは、コードが「想定している」挿入位置にエラーが発生し、MariaDBはデフォルト値を設定します。たとえば...

INSERT INTO table SET 
    email = '[email protected]', -- varchar 
    phone_number = '', -- bigint 
    ts = '2017-05-30 23:51:23', -- datetime 
    some_val = '689728' -- varchar 

このコードは、前に罰金働いていたが、私はアップグレードしましたので、私は今...

エラー1(is_some_toggleは、エラーの次のカップルtinyint型ではないです取得します上記のクエリで定義され、MariaDBはちょうど私がis_some_toggleするデフォルト値を設定した後、0)

Field 'is_some_toggle' doesn't have a default value 

エラー2()

Incorrect integer value: '' for column 'phone_number' at row 1 
を挿入することが想定されます

これは機能だと思いますが、バグではありません。私は彼らのchangelogsの10.2シリーズを見てきました。何も飛び出さないと思っていますが、たくさんありますので、私はそれを見逃していました。私はOLD_SQL用のサーバー設定を見ましたが、それは私が探していたようではありませんでした。何かご意見は?

MacOSのシエラ10.12.5はところで

CREATE TABLE `table` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `email` varchar(200) NOT NULL, 
    `phone_number` bigint(20) NOT NULL, 
    `some_val` varchar(6) NOT NULL, 
    `ts` datetime DEFAULT NULL, 
    `is_some_toggle` tinyint(1) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `email_code` (`email`(15),`some_val`), 
    KEY `phone_number_code` (`phone_number`,`some_val`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 
+0

「SHOW CREATE TABLE」を提供してください。 –

答えて

1

非常にゆっくりと私のために働いたのchangelogを通過するように見えます。

this articleに概要が示されているように、sql_modeが更新されました。

Option  | Old default value        | New default value 
sql_mode | NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION  | STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION 

私はデフォルトに戻ってそれを変更し、私は金のように良いです。

関連する問題