資料庫遷移到Amazon RDS 的問題

2022-04-17 05:37:02 字數 1384 閱讀 3272

亞馬遜的雲平台提供資料庫服務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 firsttimestampcolumn in a table, if not declared with thenullattribute or an explicitdefaultoron updateclause, is automatically assigned thedefault current_timestampandon update current_timestampattributes.

mysql 5.6.6 之後引入了乙個引數-explicit_defaults_for_timestamp

這個引數的目的就是提供乙個選擇去turn off timestamp型別的特性,比如

notimestampcolumn is assigned thedefault current_timestamporon update current_timestampattributes 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,如圖...