手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

MySQL的table is read only 解决方法

[日期:2014-04-09] 来源:Linux社区  作者:Linux [字体: ]

工作中遇到一个问题:要更新一个数据表。

这个表是我自己创建的,有7个字段,id、name、package等等

创建的时候,因为我把name、package的信息分别存在两个文本文件中,

所以我就用Insert方法,一次性将所有的name插入数据库中。

name全部导入数据库中了,但是我的package没有导入,这时我仍然想用insert的方法插入,但是不行。

这时候应该利用update的方法。一次更新多条信息的思路如下:

UPDATE table_name
    SET field_name = CASE other_field
        WHEN 1 THEN 'value'
        WHEN 2 THEN 'value'
        WHEN 3 THEN 'value'
    END
WHERE id IN (1,2,3)

测试代码如下:

<?php
/*
*function: insert app's apk ,logo_url, document_title,app_desc,package_name
*   into talbe atable use database db .
*/

//connect database catx.
 $server='localhost';
 $user='root';
 $passwd='root';
 $port='3306';
 $dbname='catx';
 $link=MySQL_connect($server,$user,$passwd);
 if (!$link) {
  die('Could not connect: ' . mysql_error());
 }
 else echo "Connected successfully\n";
 mysql_select_db("db",$link);
//set init variable and start time 
 $st=microtime_float();
 $table="pydot_g";
 $path = "txt";
 $fname_package_name  = "package_name.txt";
 //
 $handle= @fopen($path."/".$fname_package_name, "r"); 
 $i=1;
 $sql = "UPDATE pydot_g SET package_name = CASE id ";
 $ids="";
 while(($buf[$i]=fgets($handle,512))!==false){ 
  $sql .= sprintf("WHEN %d THEN '%s' ", $i, $buf[$i]);  // 拼接SQL语句 
  $ids .= sprintf("%d,",$i);
  $i++;
 } 
 //$ids=implode(',',$ids);
 $ids.=$i;
 $sql .= "END WHERE id IN ($ids)"; 
 echo $sql; 
 mysql_query($sql);
 fclose($handle);
 mysql_close($link);
//echo the results and total time used 
 $et=microtime_float();
 $t=$et-$st;
 echo "\r\ninsert into talbe ",$table," ",$i,"times;\r\n";
 echo "Total time $t seconds.\r\n";
//function calculate time ,return a float number 
 function microtime_float(){ 
  list($usec, $sec) = explode(" ", microtime());
  return ((float)$usec + (float)$sec);
 }
?> 

linux
相关资讯       table is read only 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款