精华内容
下载资源
问答
  • name和code的输入错误:有一位网友使用PowerDesigner进行数据库建模,由于对...但是正是由于对这个概念没有弄清楚,恰恰将name和code弄,code输入列中输入中文,name列中输入英文。如下图所示: <...

    name和code的输入错误:有一位网友使用PowerDesigner进行数据库建模,由于对PowerDesigner的使用不熟悉,勿以为对表中的列生成脚本会使用name而不是code。该网友的本意是:使用中文作为注释便于理解和沟通,而sql脚本则采用英文。但是正是由于对这个概念没有弄清楚,恰恰将name和code弄错,code输入列中输入了中文,name列中输入了英文。如下图所示:
      
    < language="JavaScript" type="text/javascript">resizeImage('http://dev.csdn.net/Develop/ArticleImages/22/22565/CSDN_Dev_Image_2003-12-51405510.gif','image0')
      所以生成的脚本如下:
      ========================================
      create table 学生 (
       学号 int null,
       姓名 varchar(20) null,
       年龄 smallint null,
       性别 bit null,
       已婚 bit null,
       身份证号 varchar(18) null,
       备注 varchar(50) null
      )
      ========================================
      这恰恰和他的本意相违背,所以,为了正确的生成英文脚本时,不得不手动将name和code以正确的中英文次序再重新输入一次,模型中有几十张表,该工作耗费了大量宝贵的开发的时间,造成了不必要的损失。
      讨论:
      要解决这个问题我们要首先要了解PowerDesigner是如何成脚本。在2.15PowerDesigner的变量一节中曾经提到,很多对象都既包含一个代码变量(code variable)又包含一个生成代码变量(generated code variable)。代码(code)变量是在对象属性窗口中定义的属性代码,而生成代码(generated code)变量则是根据对象的属性代码和生成选项计算而产生的,如果代码(Code)的长度超过了DBMS中限制的最大长度,则会自动截取code产生生成代码(generated code)。而PowerDesigner在默认情况下生成脚本既不是采用name也不是code,而是代码(code)生成的“生成代码”(generated code)作为对象的名称。而通常情况下由于code本身没有超过DBMS规定的最大长度,所以会给人一种错误的认识,认为脚本生成使用的是code作为名称。
      这样,在这个例子中解决问题的思路就很清楚了,如果可以采用name来生成英文代码就可以解决该问题,换句话说,就是用name(名称)替换generated code(生成代码)。参考2.15PowerDesigner的变量一节中的变量列表:“用于定义表的变量”,可得知COLUMN是列的生成代码,COLNNAME是列名称(name),COLNCODE是列代码(code)。
      COLNCODE和COLUMN不同之处在于COLUMN是列的生成代码,即COLNCODE在DBMS最大长度范围内的code,如果code太长,就会被截取一部分,这时候的COLUMN就和COLNCODE就不相等了,但通常情况下code不会超过最大长度即与COLUMN相等。
      解决方案:
      如下图所示,选择Database->Edit current database,选择script->object->column->add
      
    < language="JavaScript" type="text/javascript">resizeImage('http://dev.csdn.net/Develop/ArticleImages/22/22565/CSDN_Dev_Image_2003-12-51405512.gif','image1')
      图表 2.15.2.1
      可以在窗口右方的Value编辑框中看到定义表中列的代码模板:
      ==========================================
      %20:COLUMN%[%COMPUTE%?AS(%COMPUTE%):%20:DATATYPE%[%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]
      [[constraint %CONSTNAME%] check (%CONSTRAINT%)]]
      ==========================================
      参考2.15.2 PowerDesigner中对变量格式化一节,此外,由于变量在PowerDesigner中的引用需要加“% %”,所以很容易理解代码模板中的“%20:COLUMN%”表示对列的生成代码(generated code)采用固定长度20位,而我们需要做的正是将COLUMN换为COLNNAME,也就是将“%20:COLNNAME%”换为“%20:COLNNAME%”,然后点击确定,弹出确认窗口,点击“是”表示保存该修改。进入表中的priview属性页中可以查看代码发生变化,基本上解决了这个问题:
      ==========================================
      create table 学生 (
       studenNo int null,
       studentName varchar(20) null,
       age smallint null,
       gender bit null,
       isMarried bit null,
       idCardNo varchar(18) null,
       description varchar(50) null
      )
      ==========================================
      观察代码发现表名称还是采用了这位网友输入的相反的中文,我们可以用相同的方法,Database->Edit current database,选择Script->Object->Table->Create将%TABLE%换为%TNAME%,这样,便会发现脚本中的“学生”也会正确的成为“student”。
      通过这种方法,这个问题的解决只需要花费不到一分钟的时间,而不需要动辄手动修改数小时,让人头晕眼花没有一丝成就感。

     

    展开全文
  • name和code的输入错误:有一位网友使用PowerDesigner进行数据库建模,由于对...但是正是由于对这个概念没有弄清楚,恰恰将name和code弄,code输入列中输入中文,name列中输入英文。如下图所示: res
    name和code的输入错误:有一位网友使用PowerDesigner进行数据库建模,由于对PowerDesigner的使用不熟悉,勿以为对表中的列生成脚本会使用name而不是code。该网友的本意是:使用中文作为注释便于理解和沟通,而sql脚本则采用英文。但是正是由于对这个概念没有弄清楚,恰恰将name和code弄错,code输入列中输入了中文,name列中输入了英文。如下图所示:
      
    <script language="JavaScript" type="text/javascript">resizeImage('http://dev.csdn.net/Develop/ArticleImages/22/22565/CSDN_Dev_Image_2003-12-51405510.gif','image0')</script>
      所以生成的脚本如下:
      ========================================
      create table 学生 (
       学号 int null,
       姓名 varchar(20) null,
       年龄 smallint null,
       性别 bit null,
       已婚 bit null,
       身份证号 varchar(18) null,
       备注 varchar(50) null
      )
      ========================================
      这恰恰和他的本意相违背,所以,为了正确的生成英文脚本时,不得不手动将name和code以正确的中英文次序再重新输入一次,模型中有几十张表,该工作耗费了大量宝贵的开发的时间,造成了不必要的损失。
      讨论:
      要解决这个问题我们要首先要了解PowerDesigner是如何成脚本。在2.15PowerDesigner的变量一节中曾经提到,很多对象都既包含一个代码变量(code variable)又包含一个生成代码变量(generated code variable)。代码(code)变量是在对象属性窗口中定义的属性代码,而生成代码(generated code)变量则是根据对象的属性代码和生成选项计算而产生的,如果代码(Code)的长度超过了DBMS中限制的最大长度,则会自动截取code产生生成代码(generated code)。而PowerDesigner在默认情况下生成脚本既不是采用name也不是code,而是代码(code)生成的“生成代码”(generated code)作为对象的名称。而通常情况下由于code本身没有超过DBMS规定的最大长度,所以会给人一种错误的认识,认为脚本生成使用的是code作为名称。
      这样,在这个例子中解决问题的思路就很清楚了,如果可以采用name来生成英文代码就可以解决该问题,换句话说,就是用name(名称)替换generated code(生成代码)。参考2.15PowerDesigner的变量一节中的变量列表:“用于定义表的变量”,可得知COLUMN是列的生成代码,COLNNAME是列名称(name),COLNCODE是列代码(code)。
      COLNCODE和COLUMN不同之处在于COLUMN是列的生成代码,即COLNCODE在DBMS最大长度范围内的code,如果code太长,就会被截取一部分,这时候的COLUMN就和COLNCODE就不相等了,但通常情况下code不会超过最大长度即与COLUMN相等。
      解决方案:
      如下图所示,选择Database->Edit current database,选择script->object->column->add
      
    <script language="JavaScript" type="text/javascript">resizeImage('http://dev.csdn.net/Develop/ArticleImages/22/22565/CSDN_Dev_Image_2003-12-51405512.gif','image1')</script>
      图表 2.15.2.1
      可以在窗口右方的Value编辑框中看到定义表中列的代码模板:
      ==========================================
      %20:COLUMN%[%COMPUTE%?AS(%COMPUTE%):%20:DATATYPE%[%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]
      [[constraint %CONSTNAME%] check (%CONSTRAINT%)]]
      ==========================================
      参考2.15.2 PowerDesigner中对变量格式化一节,此外,由于变量在PowerDesigner中的引用需要加“% %”,所以很容易理解代码模板中的“%20:COLUMN%”表示对列的生成代码(generated code)采用固定长度20位,而我们需要做的正是将COLUMN换为COLNNAME,也就是将“%20:COLNNAME%”换为“%20:COLNNAME%”,然后点击确定,弹出确认窗口,点击“是”表示保存该修改。进入表中的priview属性页中可以查看代码发生变化,基本上解决了这个问题:
      ==========================================
      create table 学生 (
       studenNo int null,
       studentName varchar(20) null,
       age smallint null,
       gender bit null,
       isMarried bit null,
       idCardNo varchar(18) null,
       description varchar(50) null
      )
      ==========================================
      观察代码发现表名称还是采用了这位网友输入的相反的中文,我们可以用相同的方法,Database->Edit current database,选择Script->Object->Table->Create将%TABLE%换为%TNAME%,这样,便会发现脚本中的“学生”也会正确的成为“student”。
      通过这种方法,这个问题的解决只需要花费不到一分钟的时间,而不需要动辄手动修改数小时,让人头晕眼花没有一丝成就感。 
    展开全文
  • 你没听:是删掉线上的数据库!运营那边顿时炸锅:怎么回事?系统不能访问!什么情况啊?!很多客户都在投诉!! 尽管运营那边慌慌张张的不知所措,但是,我们作为技术人员还是要淡定,不就是删了数据库吗...

    写在前面

    估计二狗子这几天是大姨夫来了,心情很郁闷,情绪也很低落,工作的时候也有点心不在焉。让他发个版本,结果,一行命令下去把线上的数据库删了!你没听错:是删掉了线上的数据库!运营那边顿时炸了锅:怎么回事?系统不能访问了!什么情况啊?!很多客户都在投诉了!!
    
    尽管运营那边慌慌张张的不知所措,但是,我们作为技术人员还是要淡定,不就是删了数据库吗?没事,哥帮你搞定!
    
    如果文章对你有点帮助,请微信搜索并关注 冰河技术 微信公众号,点赞、在看、留言和转发,你的支持是我持续创作的最大动力!!
    

    事件背景

    MySQL数据库每日零点自动全备
    某天上午9点,二狗子不小心drop了一个数据库
    我们需要通过全备的数据文件,以及增量的binlog文件进行数据恢复
    

    主要思想与原理

    利用全备的sql文件中记录的CHANGE MASTER语句,binlog文件及其位置点信息,找出binlog文件增量的部分
    用mysqlbinlog命令将上述的binlog文件导出为sql文件,并剔除其中的drop语句
    通过全备文件和增量binlog文件的导出sql文件,就可以恢复到完整的数据
    

    过程示意图

    操作过程
    模拟数据

    CREATE TABLE student (
    id int(11) NOT NULL AUTO_INCREMENT,
    name char(20) NOT NULL,
    age tinyint(2) NOT NULL DEFAULT ‘0’,
    PRIMARY KEY (id),
    KEY index_name (name)
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8

    mysql> insert student values(1,‘zhangsan’,20);
    mysql> insert student values(2,‘lisi’,21);
    mysql> insert student values(3,‘wangwu’,22);

    全备命令

    mysqldump -uroot -p -B -F -R -x --master-data=2 test|gzip >/server/backup/test_$(date +%F).sql.gz

    参数说明:

    -B 指定数据库
    -F 刷新日志
    -R 备份存储过程等
    -x 锁表
    --master-data 在备份语句里添加CHANGE MASTER语句以及binlog文件及位置点信息
    

    继续插入数据并删库

    mysql> insert student values(4,‘xiaoming’,20);
    mysql> insert student values(5,‘xiaohong’,20);

    在插入数据的时候我们模拟误操作,删除test数据库。

    mysql> drop database test;

    此时,全备之后到误操作时刻之间,用户写入的数据在binlog中,需要恢复出来。
    查看全备之后新增的binlog文件

    cd /server/backup/

    ls

    test_2020-08-19.sql.gz

    gzip -d test_2020-08-19.sql.gz

    grep CHANGE test_2020-08-19.sql

    – CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000003’, MASTER_LOG_POS=107;

    这是全备时刻的binlog文件位置,即mysql-bin.000003的107行,因此在该文件之前的binlog文件中的数据都已经包含在这个全备的sql文件中了
    移动binlog文件,并读取sql,剔除其中的drop语句

    cp /data/3306/mysql-bin.000003 /server/backup/

    mysqlbinlog -d test mysql-bin.000003 >mysql-bin.000003.sql

    接下来,使用vim编辑mysql-bin.000003.sql文件,剔除drop语句

    注意:在恢复全备数据之前必须将该binlog文件移出,否则恢复过程中,会继续写入语句到binlog,最终导致增量恢复数据部分变得比较混乱
    恢复数据
    http://v.qq.com/x/search/?q=%E5%8D%8E%E7%BA%B3%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D%E5%BE%AE%E4%BF%A1_%E6%80%BB%E5%8F%B018183615678

    mysql -uroot -p < test_2020-08-19.sql

    mysql -uroot -p -e “select * from test.student;”

    ±—±---------±----+
    | id | name | age |
    ±—±---------±----+
    | 1 | zhangsan | 20 |
    | 2 | lisi | 21 |
    | 3 | wangwu | 22 |
    ±—±---------±----+

    此时恢复了全备时刻的数据,然后使用mysql-bin.000003.sql文件恢复全备时刻到删除数据库之间,新增的数据。

    mysql -uroot -p test < mysql-bin.000003.sql

    mysql -uroot -p -e “select * from test.student;”

    ±—±---------±----+
    | id | name | age |
    ±—±---------±----+
    | 1 | zhangsan | 20 |
    | 2 | lisi | 20 |
    | 3 | wangwu | 20 |
    | 4 | xiaoming | 20 |
    | 5 | xiaohong | 20 |
    ±—±---------±----+

    此时,整个恢复过程结束,是不是很简单呢?没错,就是这么简单!!
    总结

    适合人为SQL语句造成的误操作或者没有主从复制等的热备情况宕机时的修复。
    恢复条件要全备和增量的所有数据。
    恢复时建议对外停止更新,即禁止更新数据库。
    先恢复全量,然后把全备时刻点以后的增量日志,按顺序恢复成SQL文件,然后把文件中有问题的SQL语句删除(也可通过时间和位置点),再恢复到数据库。
    

    http://v.qq.com/x/search/?q=%E5%8D%8E%E7%BA%B3%E5%8E%85%E5%BC%80%E6%88%B7_%E6%80%BB%E5%8F%B018183615678
    重磅福利

    关注「 冰河技术 」微信公众号,后台回复 “设计模式” 关键字领取《深入浅出Java 23种设计模式》PDF文档。回复“Java8”关键字领取《Java8新特性教程》PDF文档。回复“限流”关键字获取《亿级流量下的分布式限流解决方案》PDF文档,三本PDF均是由冰河原创并整理的超硬核教程,面试必备!!

    展开全文
  • pymssql.ProgrammingError: (102, b"Incorrect syntax near ','.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: ...)这种错误结果有两种,一是sql语句写错了而是里面有关键字如close...

    pymssql.ProgrammingError: (102, b"Incorrect syntax near ','.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n")这种错误结果有两种,一是sql语句写错了而是里面有关键字如close,in,with等

    解决办法

    SqlServer数据库列名是关键字,解决办法是将该字段加上中括号“ [ ] ”,就可以操作

    MySQL数据库列名是关键字,解决办法是将该字段加上单引号或双引号 ,就可以操作

    展开全文
  • 有强迫症或健忘症的小伙伴们在建好数据库和表以后,通常会怀疑自己刚才是不是敲错了怎么办?如果不是使用图形界面是不是就没法查看啦? 不存在的,这就告诉你查看口令:DESCRIBE 语法规则为:DESCRIBE 表名; 大...
  • 服务器上装的大都是英文版,一看见英文,操作都变得小心翼翼起来,生怕哪里搞,第二天就要被安排辞职申请数据库备份先找到数据库文件位置,停掉sql,再把这个文件拷贝下来就可以数据库很大的话,免费...
  • 删除订单数据时where条件写错了,导致多删了很多用户订单。 更新会员有效时间时,一次性把所有会员的有效时间都更新了。 修复线上数据时,改错了,想还原。 还有很多很多场景,我就不一一列举了。 如果出现线上环境...
  • 上回说到表单的创建但创建完后突然想起来忘了写一个列或者一个列名写错了那该怎么办呢?删了从写?完全不需要接下来我们来学习一下表单的添加与删除。 1.表名的修改 这里我们主要用到了 ...
  • 网上介绍的同步方法,都需要表有主键,若没有主键该怎么办呢,为此,我自己对DATATABLE增删改自动生成相应的INSERT, DELETE, UPDATE相应的SQL语句来完成这些功能 为了不会删,改,对于所有没有改变的字段都作为...
  • 我试着故意写错语句 ![图片说明](https://img-ask.csdn.net/upload/201512/27/1451202581_373299.png) **已经百度过新建环境变量NLS_LANG加这个,也没用,天啊** ![图片说明]...
  • 多个float的div 之间,想强制换行怎么办? 如 li {float:left;...注:不要告诉我设置width(因为宽度要根据内容而定,li里可能是数据库取出的图片,无法确定宽度) ...是这样,刚才写错了: ;height:0;width:0">
  • 但如果是delete和update,而由于某些开发人员忘记写where条件,或者条件写错了,导致一下子删除或更新了,导致数据出了问题,最关键的是当发现问题后,没有人承认这个是他干的,那该怎么办呢? 下...
  • 获得拼凑SQL语句运行后的结果

    千次阅读 2013-10-17 18:19:25
    这种拼凑SQL语句,如果在数据库端组装,必然是一条长长的字符串,然后 exec(@sql)。如果这条语句在存储过程里边,存储过程的调用方会获得查询结果。但假如是这个存储过程里面就想拿到结果来进行处理,怎么办呢?...
  • ORM的由来 如果你有很多的数据库操作,并且你的Python...聪明的人想出了一个办法:用Python语法来写,然后使用一个中间工具将Python代码翻译成原生的SQL语句,这样你总不会写错了吧?这个中间工具就是所谓的ORM(对...
  • 此时,我们要修改错误的数据,只需要删除写错的那部分数据就可以,但是很遗憾,hbase中没有这样的sql语句(hbase是不能用SQL操作的,这里概指hbase的一套数据库操作语言),怎么办呢。。。 网上找下,看这个...
  • 您可能是继承一堆包含引用它们的代码的数据库,或者您有意建立一些数据库。 没关系! 问题是:您如何确切知道引用链接服务器的内容? 您可以手动查看每个对象定义或进行查找/替换 那可能有用,但是您仍然可能会...
  • 【Mybatis系列】日志

    2021-01-17 21:34:36
    当我们的SQL语句写错了怎么办? 思考:我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率? 如果一个 数据库相关的操作出现了问题,我们可以根据输出的SQL语句快速排查问题。 ...
  • 删除订单数据时where条件写错了,导致多删了很多用户订单。 更新会员有效时间时,一次性把所有会员的有效时间都更新了。 修复线上数据时,改错了,想还原。 还有很多很多场景,我就不一一列举了。 ...
  • SQL server表数据误删除后的恢复方法

    千次阅读 2012-09-11 14:42:20
    一不小心,where条件写错,在查询分析器里面运行delete语句,误删除一个表的数据,怎么办? 正确的步骤是:第一时间分离数据库,停止SQL服务,把该数据库的MDF和LDF文件复制一份后(这比备份好,备份还原时的可能会...
  • CRM-客户关系管理系统

    千次阅读 2011-02-18 22:17:00
    是不是写错了呢?检查了,可以说是翻了个底朝天,还是那样子,怎么办?以前的拼写错误、没有发布到Tomcat,最有可能的是,Servlet接受的请求不对,怎么办呢?查啊!看啊!检查啊!没有问题啊!还把web.xml移到了WEB-...
  • 本文地址:一、前言数据库是服务器开发必不可少的一个基本环节,可是数据开发遇到问题怎么办?这里就是记一个MySQL错误的解决方案。MySQL的wait_timeout默认值是8小时,这次就这。二、问题回顾项目成,...
  • 有强迫症或健忘症的小伙伴们在建好数据库和表以后,通常会怀疑自己刚才是不是敲错了怎么办?如果不是使用图形界面是不是就没法查看啦? 不存在的,这就告诉你查看口令:DESCRIBE 语法规则为:DESCRIBE 表名; 注意...
  • 现在有甲乙丙三个人,他们合作去开发一个购物网站: 甲:订单处理模块 ...当你中招之后,这是好事,犯了错,才能解决嘛。纵观整个软件开发历史,也有几十年的历史吧,当你现在的遇到的一些问题,我们
  • 现在有甲乙丙三个人,他们合作去开发一个购物网站: 甲:订单处理模块 ...当你中招之后,这是好事,犯了错,才能解决嘛。纵观整个软件开发历史,也有几十年的历史吧,当你现在的遇到的一些问题,我们

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

数据库写错了怎么办