2013-11-09 95 views
1

我想在之前,我錯誤地設置了我的數據庫說列不爲空,並且沒有默認值。 (我想,從未注意)。MySQL升級5.5到5.6創建的問題

現在更新到mysql 5.6後,很多我的專欄的說,這是不爲空,它並沒有默認值,當我嘗試插入類似

值1 2 3(但沒有4)代入塔1 2 3

它失敗,因爲列4未設置爲空也不具有默認值給我一個錯誤。有沒有在MySQL的設置繞過這個?

我從5.5遷移到5.6

分上OS 6,PHP 5.4

只是困惑,爲什麼數據庫之前的工作,而不是了,我所做的只是導出數據庫,並再次做了一個進口。

+0

檢查MySQL的更新日誌或指令;他們通常會識別新版本中發生了什麼變化;我確定這是一些鬆散的限制,在較新的版本中收緊。 –

+0

你可以做的一件事是發出alter語句來更新特定的表/列來設置默認值。 –

+0

是的,我想這就是我最終不得不去做的。他們收緊了我相信的限制。真是煩人..只是爲了從innodb heh得到全文搜索.. – Darius

回答

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),並等待所有從服務器處理完此次更改時生成的所有二進制日誌。然後升級主站,然後將主站更改回基於語句的日誌記錄。


經過進一步調查,關閉mysql嚴格模式在my.cnf文件中工作。

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