亞馬遜的雲平台提供資料庫服務rds
把資料庫從本地vm遷移到rds之後,測試時出現乙個問題
createdategmt cannot be null
createdategmt 是乙個timestamp型別,當資料進行插入操作時可以自動生成為當前時間。當entity裡面對應的attribute沒有設值,default為null。
在之前的vm測試時當插入的值為null, mysql會自動設為當前時間。但是在rds上面卻報了這樣的錯誤。
經過簡單的檢查對比:
rds上用的是5.6.12版本,而之前的vm大部分用了5.5.27版本,只有乙個用了5.6.12版本
rds上面的時區是utc
針對上面的差異測試了vm上面5.6.12版本,沒有問題。
也測試了在rds上面更改時區, 問題繼續
看上去跟時區和版本沒有關係?
於是定位問題是rds上面的配置的問題,google了rds相關的問題發現一下帖子
恍然大悟,終於還是跟mysql的版本和設定有關係。
mysql的timestamp 型別有一些特性,比如
the firsttimestamp
column in a table, if not declared with thenull
attribute or an explicitdefault
oron update
clause, is automatically assigned thedefault current_timestamp
andon update current_timestamp
attributes.
mysql 5.6.6 之後引入了乙個引數-explicit_defaults_for_timestamp
這個引數的目的就是提供乙個選擇去turn off timestamp型別的特性,比如
notimestamp
column is assigned thedefault current_timestamp
oron update current_timestamp
attributes automatically. those attributes must be explicitly specified.
而rds上的mysql上的explicit_defaults_for_timestamp值為1,說明已經turn off了timestamp的特性. 而createdategmt又沒有設定on update等屬性,所以不會自動生成當前時間。
解決辦法有幾種
1. 降級mysql版本,等待amazon解決
2. 用trigger生成時間
3. 在程式裡去判斷和設定時間
MSSQL資料庫遷移到Oracle
最近要把乙個mssql資料庫遷移到oracle上面,打算借助powerdesigner這個軟體來實現 今天簡單研究一下這個軟體的運用 把一步簡單的操作步驟記錄下來 1 首先我們開啟powerdesigner,並新建乙個physical data model 2 工具欄裡的 資料庫 configure...
如何將資料庫從SQL Server遷移到MySQL
一 遷移database schema。首先使用sybase powerdesigner的逆向工程功能,逆向出sql server資料庫的物理模型。具體操作是在powerdesigner中選擇 file reverse engine 再選擇database,將dbms選擇為sql server,如圖...
如何將資料庫從SQL Server遷移到MySQL
一 遷移database schema。首先使用sybase powerdesigner的逆向工程功能,逆向出sql server資料庫的物理模型。具體操作是在powerdesigner中選擇 file reverse engine 再選擇database,將dbms選擇為sql server,如圖...