亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 15347 | 回復: 12
打印 上一主題 下一主題

【討論中】【更新】求教:binlog中字段值是十六進制 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-08-15 13:44 |只看該作者 |倒序瀏覽
本帖最后由 byrcc 于 2012-09-07 18:32 編輯

前些時間很忙,沒有繼續(xù)分析這個問題。今天再研究了一下,有些眉頭了,基本定位到prepare statement的問題,并且可以重現(xiàn),腳本附后面。在這里有個類似的問題http://bugs.mysql.com/bug.php?id=54791,不過粗看一下還是沒發(fā)現(xiàn)問題根源和解決辦法。求各位大牛幫分析分析!
重現(xiàn)條件:1,表gbk編碼。2,使用prepare方式插入數(shù)據(jù)。
我在5.0.77-log和5.1.61-log版本的mysql上都測試都有這問題,php版本5.1.6
插入數(shù)據(jù)可以成功,并在表中能查到數(shù)據(jù),值都正確,但是使用mysqlbinlog查看到的sql中的數(shù)值是十六進制的,而general query log也顯示是十六進制的,如下
mysqlbinlog查看結(jié)果:
insert into tbl_test_pdo values(0x30,0x313030373736363032,0xB2E2)
general log:
  1. Time                 Id Command    Argument
  2. 120907 18:24:20     1 Connect   root@127.0.0.1 on cc
  3.                     1 Query     set names gbk
  4.                     1 Prepare   insert into tbl_test_pdo values(?,?,?)
  5.                     1 Execute   insert into tbl_test_pdo values(0x30,0x313030373736363032,0xB2E2)
  6.                     1 Close stmt
復制代碼
我測試使用的腳本
建表:
  1. CREATE TABLE `tbl_test_pdo` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `num` decimal(18,0) DEFAULT NULL,
  4.   `dsc` varchar(32) DEFAULT NULL,
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=gbk
復制代碼
php腳本:
  1. $dbms='mysql';
  2. $host='127.0.0.1';
  3. $dbname='test';
  4. $dbuser='root';
  5. $dbpass='pass';
  6. $dsn="$dbms:host=$host;dbname=$dbname";
  7. try {
  8.         $dbh = new PDO($dsn, $dbuser, $dbpass);
  9.         $sql2 = "insert into tbl_test_pdo values(:_1,:_2,:_3)";
  10.         $dbh->exec('set names gbk');
  11.         $stmt = $dbh->prepare($sql2,array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
  12.         $rlt = $stmt->execute(array(':_1'=>0,':_2'=>100776602,':_3'=>'測'));
  13. } catch (PDOException $e) {  die ("Error!: " . $e->getMessage()); }
復制代碼
===================上次發(fā)貼內(nèi)容=====================
新手求教大家一個問題
mysql版本:5.1.61-log
使用這個版本自帶mysqlbinlog查看一個binlog文件,發(fā)現(xiàn)有下面的sql。它的特點是,values列表的值全是十六進制的,開發(fā)反應也沒有直接使用十六進制操作數(shù)據(jù)庫。為啥查看出來的binlog結(jié)果是這樣的呢?
表的id定義為decimal(18,0) primary key,而這個sql中的id值0x313030373736383436轉(zhuǎn)成十進制后,已經(jīng)超過decimal(18,0)的范圍。當前mysql的sql_mode為默認設(shè)置。這條數(shù)據(jù),依據(jù)開發(fā)的log,id的值大概在100776703這個值大小。而100776703這個id在表中也能夠查到那條數(shù)據(jù)。
這問題導致的結(jié)果是,在從庫上,這個表的更新報錯了,錯誤描述是tbl_xxxxxxxxxx這個表id主鍵沖突,沖突的值是999999999999999999,這個值恰好是十六進制id值0x313030373736383436截斷到精度decimal(18,0)后的值。

不知道大家是否遇到過同樣的問題?

insert into tbl_xxxxxxxxxx (id,version,createtime,updatetime,...在此省略部分字段列表...) values (0x313030373736383436,0x31,0x323031322D30382D31342031363A31313A3132,0x323031322D30382D31342031363A31313A3132,"","",0x313932307831323030,"","","","",0x736F676F752E636F6D,0xBAA3D4F4CDF5382E6A7067,0x373532,"","","","","","","",0x2F75706C6F6164496D6167652F323031322F30382F31342F313334343933313837325F352E6A7067,0x2F75706C6F6164496D6167652F323031322F30382F31342F313334343933313837325F352E6A70675F73,0x31,0x33,0x2D31,0x3530,0x30,0x2D31,0x2D31,0x30,0x31,"")

論壇徽章:
9
每日論壇發(fā)貼之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00每日論壇發(fā)貼之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2016-03-07 16:30:25
2 [報告]
發(fā)表于 2012-08-15 16:46 |只看該作者
mysqlbinlog 用什么參數(shù)查看的?

論壇徽章:
9
每日論壇發(fā)貼之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00每日論壇發(fā)貼之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2016-03-07 16:30:25
3 [報告]
發(fā)表于 2012-08-15 16:46 |只看該作者
mysqlbinlog 用什么參數(shù)查看的?

論壇徽章:
0
4 [報告]
發(fā)表于 2012-08-15 17:33 |只看該作者
就直接是mysqlbinlog logfile_name,并且在slave庫上,報錯時,show slave status 看到的錯誤信息中sql里的值也是十六進制的,同樣在從庫的errorlog中顯示得結(jié)果也如此
回復 3# cenalulu


   

論壇徽章:
9
每日論壇發(fā)貼之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00每日論壇發(fā)貼之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2016-03-07 16:30:25
5 [報告]
發(fā)表于 2012-08-15 17:34 |只看該作者
master 上的binlog有這個問題么?

PS:這個event 是row format 還是statement format的?

論壇徽章:
0
6 [報告]
發(fā)表于 2012-08-15 17:45 |只看該作者
本帖最后由 byrcc 于 2012-08-15 17:46 編輯

回復 5# cenalulu


這個sql是在master上的binlog中看到的。

mysql 5.1.61版本,剛從5.0版本升級完成,沒有修改mysql的默認復制模式,所以應該是statement format,不過不知道跟升級是否有關(guān)。只是升級之前從庫一直打開著slave-skip-errors=1062,升級以后特意把它關(guān)閉了。

ps:開發(fā)說這個表操作有點特殊,使用了pdo連接,執(zhí)行sql前運行了PDO:: perpare。這東西沒見過,也沒研究,但應該跟它無關(guān)吧

論壇徽章:
9
每日論壇發(fā)貼之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00每日論壇發(fā)貼之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-01-04 06:20:00數(shù)據(jù)庫技術(shù)版塊每周發(fā)帖之星
日期:2016-03-07 16:30:25
7 [報告]
發(fā)表于 2012-08-15 18:46 |只看該作者
如果是statment format的話,SQL 應該是原樣保存的。
應該不是mysql級別的問題。
看看程序過來的query是不是就是十六進制模式的。
general log 或者tcpdump看下

論壇徽章:
0
8 [報告]
發(fā)表于 2012-08-16 19:59 |只看該作者
搜到這個帖子,也遇到了同樣的問題。不過我還在跟開發(fā)溝通
http://www.itpub.net/forum.php?m ... ble&tid=1402633

論壇徽章:
0
9 [報告]
發(fā)表于 2012-08-16 21:23 |只看該作者
這個還真沒遇到過   不過主鍵id竟然不是自增鍵啊

論壇徽章:
0
10 [報告]
發(fā)表于 2012-08-16 21:24 |只看該作者
不過可以肯定這個insert語句肯定是開發(fā)那邊的問題
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP