<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                **問題描述** 5.6.4及以上版本,datetime,time,timestamp的Binlog在5.6.4以下的備庫無法執行,如: 5.6.16(主庫): create table t1(t datetime default now()); insert into t1 values(now()); 5.5.18(備庫): show slave stauts\G?; 此時備庫中斷,報錯:Last_Errno: 1677, 描述信息:Last_Error: Column 1 of table t1.t' cannot be converted from type '' to type 'datetime' 詳情見[Bug#70085](http://bugs.mysql.com/bug.php?id=70085) **問題原因** 1) 5.5版本存儲的是datetime,time,timestamp這三種數據類型的長整型的數據,insert時的BT為: ~~~ #0 TIME_to_ulonglong_datetime (my_time=0x2ad2c82e84c0) at /u01/workplace/Percona-Server-5.5.18/sql-common/my_time.c:1187 #1 0x0000000000680b6d in Field_datetime::store (this=0x2ad2d000fb10, from=0x2ad2d0014fe0 "2014-02-25 11:20:42", len=19, cs=<value optimized out>) #2 0x00000000005488a4 in fill_record (thd=0xa602190, ptr=<value optimized out>, values=<value optimized out>, ignore_errors=<value optimized out>, triggers=0x0, event) #3 fill_record_n_invoke_before_triggers (thd=0xa602190, ptr=<value optimized out>, values=<value optimized out>, ignore_errors=<value optimized out>, triggers=0x0, event) ~~~ 2) 5.6.16的相應堆棧為: ~~~ #0 my_datetime_packed_to_binary (nr=1842590951223066624, ptr=0x7fa88005dea1 "\231\222\062\265*", dec=0) #1 0x00000000009155d4 in Field_datetimef::store_packed (this=0x7fa88005dec0, nr=1842590951223066624) #2 0x000000000091553a in Field_datetimef::store_internal (this=0x7fa88005dec0, ltime=0x7fa8d42018f0, warnings=0x7fa8d4201920) #3 0x000000000091191a in Field_temporal_with_date::store_internal_with_round (this=0x7fa88005dec0, ltime=0x7fa8d42018f0,warnings=0x7fa8d4201920) #4 0x00000000009109e9 in Field_temporal::store (this=0x7fa88005dec0, str=0x7fa8800052f8 "2014-02-25 11:20:42", len=19, cs=0x168e400) #5 0x000000000065360b in Item::save_str_value_in_field (this=0x7fa880005310, field=0x7fa88005dec0, result=0x7fa880005320) #6 0x0000000000663ef6 in Item_string::save_in_field (this=0x7fa880005310, field=0x7fa88005dec0, no_conversions=false) #7 0x000000000077bbc6 in fill_record (thd=0x6f24020, ptr=0x7fa88005deb8, values=..., ignore_errors=false, bitmap=0x0) #8 0x000000000077bcf7 in fill_record_n_invoke_before_triggers (thd=0x6f24020, ptr=0x7fa88005deb0, values=..., ignore_errors=false,triggers=0x0, event) ~~~ 從面的兩個堆棧可以看出,在構造插入數據的時候,調用的是Field的具體函數,根據不同類型調用的方法不同;5.5與5.6之間,datetime的數據類型不一致,當5.5升級到5.6時,其堆棧不變,原因是在表的FRM中,記錄了表中列的數據類型,其中5.5中的數據類型為MYSQL_TYPE_DATETIME,5.6的數據類型為MYSQL_TYPE_DATETIME2,所以對于原表升級,不影響復制,但是對于新表中如果含有這三種數據類型的表,復制到備庫就會出現問題,因為5.5中,沒有MYSQL_TYPE_DATETIME2這種數據類型。 **解決方法** 對表的DML操作或DDL操作,都是依賴于表結構而言的,這也是為什么物理5.5升級到5.6后,對于原本含有datetime,time,timestamp這三種類型的表沒有影響,但是對于新建的表就會有影響,原因就是對于產生Binlog的操作或存儲引擎的操作的Field來源于FRM文件,所以,當在創建表的時候,如果5.5要使用5.6的Binlog,那我們對于DDL含有這三種數據類型的操作,使用5.5可以識別的數據類型:MYSQL_TYPE_DATETIME,而不是MYSQL_TYPE_DATETIME2,這樣在MySQL內部的操作過程中就不會有問題,因此我們可以為MySQL添加一個參數,當參數打開時,創建datetime,time,timestamp的數據類型為兼容5.5的數據類型,否則為新的數據類型。 **TimeStamp 與 Datetime 的區別** 1\. 值域不同 TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC. DATETIME The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59' TimeStamp帶有時區信息,其中TimeStamp在存儲時,將當前時間轉化為UTC格式的時間,如北京時間,現在是2014-03-15 23:21:00,那么存儲的會是2014-03-15 23:21:00 - 3600S;取數據的時候會加上當前時區時間。 2\. 底層的存儲結構不同 5.5 是以longlong類型存儲的,而5.6 的格式如下: timestamp:4+max(3); (變長,4-7個字節),沒有Sign datetime: 底層存儲(變長,5-8個字節) ~~~ 1 bit sign (used when on disk) 17 bits year*13+month (year 0-9999, month 0-12) 5 bits day (0-31) 5 bits hour (0-23) 6 bits minute (0-59) 6 bits second (0-59) 24 bits microseconds (0-999999) Total: 64 bits = 8 bytes ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看