1

以前は、列が null ではなく、デフォルト値がないと言って、データベースを誤って設定していたと思います。(私は、注意を払ったことはないと思います)。

mysql 5.6に更新した後、多くの列でnullではなく、デフォルト値がないと表示され、次のようなものを挿入しようとすると

値 1 2 3 (ただし 4 はありません) を列 1 2 3 に

列4がnullに設定されておらず、デフォルト値もないため、失敗してエラーが発生します。これをバイパスするmysqlの設定はありますか?

5.5 から 5.6 に移行しました

セントOS 6、php 5.4

データベースが以前は機能していた理由を混乱させただけで、データベースをエクスポートして再度インポートするだけでした。

4

2 に答える 2

1

答えが見つかりました: http://dev.mysql.com/doc/refman/5.6/en/upgrading-from-previous-series.html

MySQL 5.6.13 以降、サーバーは適切な sql_mode チェックを適用して、挿入時または更新時に警告またはエラーを生成します。

ステートメントベースのロギング (binlog_format=STATEMENT) を使用する場合のレプリケーションの非互換性は、スレーブがアップグレードされた場合、アップグレードされていないマスターがエラーなしで前の例を実行するのに対して、スレーブで INSERT が失敗し、レプリケーションが停止することです。

これに対処するには、マスターで新しいステートメントをすべて停止し、スレーブが追いつくまで待ちます。次にスレーブをアップグレードし、続いてマスターをアップグレードします。または、新しいステートメントを停止できない場合は、一時的にマスターで行ベースのロギング (binlog_format=ROW) に変更し、すべてのスレーブがこの変更の時点までに生成されたすべてのバイナリ ログを処理するまで待ちます。次に、スレーブをアップグレードしてからマスターをアップグレードし、マスターをステートメントベースのロギングに戻します。


さらに調査した結果、my.cnf ファイルで mysql の厳密モードをオフにすると機能しました。

于 2013-11-09T10:07:24.440 に答える
0

CTRL + ALT + T (ターミナル)

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo /etc/init.d/apache2 reload
sudo apt-get install phpMySql
于 2014-11-10T05:41:30.673 に答える