精华内容
下载资源
问答
  • 本文主要介绍如何在mysql 中添加新的源文件以及如何在客户端打印列表信息。 这两个内容没有必然的联系,这里放在一起介绍主要是因为这两个功能我是一起尝试的。   1. 添加新源文件 mysql5.5的编译是基于cmake来进行...

    本文主要介绍如何在mysql 中添加新的源文件以及如何在客户端打印列表信息。 这两个内容没有必然的联系,这里放在一起介绍主要是因为这两个功能我是一起尝试的。

     

    1. 添加新源文件

    mysql5.5的编译是基于cmake来进行的, 所以当添加新的源文件的时候,需要在对应源码目录的cmake配置文件CMakeList.txt中添加新源文件的信息。

    本例中添加的新文件是gaoshow.h 和gaoshow.cc, 它们都在sql源码目录下。

    编辑sql源码目录下的CMakeList.txt,大约第39行处找到变量定义 “SET(SQL_SHARED_SOURCES” 在其后的列表的末尾添加gaoshow.cc (cmake中只需要添加.cc文件,不需要添加.h头文件)。

     

    2. 添加“客户端打印列表信息”的功能

    这个功能基于之前的博文 《如何在修改mysql代码添加新命令》:http://hi.baidu.com/gao1738/blog/item/716e1aeb3e0a5a0b6c22eb46.html。

    在《如何在修改mysql代码添加新命令》中我添加了一条新的命令"DISPATCH ADD", 现在在该命令的命令处理代码处:

    sql_parse.cc中的 “mysql_execute_command”函数中的“case SQLCOM_DISPATCH_ADD:”。具体修改后的处理代码如下:

    if (!strcmp(lex->dispatch_message, "gao"))
        {   
           global_system_variables.node_type=1;
           show_dispatch_info(thd,lex->dispatch_message);
           //my_ok(thd);
           my_eof(thd);                              //注:这里一定要用
    my_eof(thd)来结束, 而不能用my_ok(thd),否则执行该命令的过程中

                                                              // mysql会卡死在哪

                                                             // 但如果这条命令没有向客户端发送数据的话  就用 my_ok(thd)

                                                              // 具体的解释可以查看sql/sql_class.cc的3111行。 当服务端发送数据的metadata到客户端之后

                                                              // 客户端总是期待服务端发送的数据集以 "eof" 或 “error packet” 结尾。

        }   

    show_dispatch_info” 函数定义在新填的源文件中:

    这个头文件需要在sql_parse.cc中被include

    #ifndef GAO_SHOW
    #define GAO_SHOW
    bool show_dispatch_info(THD *thd, char *message);
    #endif

    #include "sql_parse.h"
    #include "gaoshow.h"
    #include <my_dir.h>

    bool show_dispatch_info(THD *thd, char *message)
    {
      Protocol *protocol= thd->protocol;
      DBUG_ENTER("show_dispatch_info");

      List<Item> field_list;

      field_list.push_back(new Item_empty_string("message", 255));   //注:这里是设置表头
      field_list.push_back(new Item_return_int("num",20,MYSQL_TYPE_LONGLONG));
    //注:这里是设置表头
      if (protocol->send_result_set_metadata(&field_list,
                                             Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF))
        DBUG_RETURN(TRUE);
      protocol->prepare_for_resend();
      protocol->store(message,&my_charset_bin);  
    //注:这里是设置表头对应的值, 按顺序一一对应
      protocol->store((ulonglong)10);                        //注:这里是设置表头对应的值, 按顺序一一对应
      if (protocol->write())
        DBUG_RETURN(TRUE);
      else
        DBUG_RETURN(FALSE);

    }

     

    3.  测试:

    这里我们直接使用《如何在修改mysql代码添加新命令》中定义的测试用例, 执行结果如下:

    ==============================================================================

    TEST                                      RESULT   TIME (ms) or COMMENT
    --------------------------------------------------------------------------

    worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
    DISPATCH ADD gao;
    message    num
    gao    10
    show variables like 'node_type';
    Variable_name    Value
    node_type    1
    main.gao                                 [ pass ]      1
     

    4. 打印多行数据

    打印多行的过程和打印一行很类似, 也是通过protocol对象, 也是先设置并发送数据的metadata, 然后一行一行发送,发送具体一行的代码可以参考sql/sql_class.cc中1895行的send_data函数。 下面是一个简单的实例:

    bool show_dispatch_info(THD *thd, const char *message)
    {
      Protocol *protocol= thd->protocol; 
      DBUG_ENTER("show_dispatch_info");
      List<Item> field_list;             //用这个list存放metadata
      field_list.push_back(new Item_empty_string("message", 255));                              //这里是设置metadata
      field_list.push_back(new Item_return_int("Position",20,MYSQL_TYPE_LONGLONG));//这里是设置metadata
      if (protocol->send_result_set_metadata(&field_list,                                                       //向客户端发送要显示的metadata
                                             Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF))
        DBUG_RETURN(TRUE);

      List<Item> items;               

    展开全文
  • 如何在Maven中添加依赖信息

    千次阅读 2018-08-03 11:02:00
    1.最简单的方法就是找一份已经配置好的pom.xml文件然后复制copy一份 2.当然如果遇到需要自己...比如说,我现在需要添加mysql的依赖信息 step1:搜索mysql step2:点击第一个搜索选项   step3:选你需要的版本 ...

    1.最简单的方法就是找一份已经配置好的pom.xml文件然后复制copy一份

    2.当然如果遇到需要自己添加的,那么其中一个方式是到 Maven Repository 这个中心仓库去找依赖信息

    比如说,我现在需要添加mysql的依赖信息

    step1:搜索mysql

    step2:点击第一个搜索选项

     

    step3:选你需要的版本

    展开全文
  • 最近做一次MySQL数据迁移的时候,突然发现自己遗漏了一个地方,那就是权限信息没有导出,如果我们使用mysqldump --all-databases的时候没有添加--flush-privileges的时候,导出的数据是不会包含mysql数据库的。...

        最近在做一次MySQL数据迁移的时候,突然发现自己遗漏了一个地方,那就是权限信息没有导出,如果我们使用mysqldump --all-databases的时候没有添加--flush-privileges的时候,导出的数据中是不会包含mysql数据库的。

       而我其实是比较懒的,不想因为这个重新导出一次,那么我就有几种方式选择。

       如果在MySQL 5.5,5.6的版本中,我可以直接导出mysql.user的数据即可。

       如果使用脚本化完成,基本是这样的形式即可,本意其实就是show grants for 'xxx'的组合形式,不断拼接解析。

    mysql -e "SELECT DISTINCT CONCAT('show grants for ','''',user,'''@''',host,'''',';') AS query FROM mysql.user where user!='root'" | grep -v query >/tmp/showgrants.sql && mysql </tmp/showgrants.sql | egrep -v 'Grants for|query'

        运行后的语句大体是如下的形式:

    GRANT ALL PRIVILEGES ON *.* TO 'adm'@'localhost' IDENTIFIED BY PASSWORD '*3DCFB64FE0CB05D63B9AF64492B5CD6269D82EE8'
    GRANT ALL PRIVILEGES ON `Cyou_DAS`.* TO 'adm'@'localhost'
    GRANT USAGE ON *.* TO ''@'mysqlactivity'

        这一招在5.5,5.6中都是可行的,但是迁移的数据库是5.7的,看到下面导出的语句,我感觉不对劲,难道都不要密码,如果确实没有,这是一个多么大的坑。

    GRANT USAGE ON *.* TO 'phplamp'@'localhost'
    GRANT ALL PRIVILEGES ON `phplampDB`.* TO 'phplamp'@'localhost'    我知道5.7做了一些改进,本身对于show grants也有一些限制,没想到真碰上这种情况,教训是如此的深刻。

        所以回到问题,如果现在要解决,就有大体的三种方式来同步权限;
    方法1:重新导出导入整个数据库    不评论,我绝对不会这么做,只是看起来是一个完整的过程,但是无用功太多,很容易被鄙视
    方法2:导出mysql的权限配置    如果是在5.5,5.6的环境,直接导出mysql.user表数据即可,但是在5.7中可不行,一种方式就是导出整个mysql库的数据
    方法3:pt工具导出         使用自定义脚本或者pt工具来导出权限信息

    当然解决方法很多,我就说说方法2,方法3

    我对比了5.6和5.7 的表结构情况。不看不知道,一看差别还真不小。

    MySQL 5.7的mysql.user表含有45个字段
    MySQL 5.6的mysql.user表含有43个字段

    这是表面现象,不是5.7多两个字段这么简单,真实情况如下:

    1) MySQL5.7中多了下面的3个字段,字段和数据类型如下:

     password_last_changed  | timestamp            
     password_lifetime      | smallint(5) unsigned
     account_locked         | enum('N','Y') 
    2)这么一看总数对不上,这是因为MySQL 5.7相比5.6少了password字段

    3)还有个细节可能被忽略,那就是MySQL 5.7的字段user相比MySQL 5.6长度从16字符增长到了32字符。


       这就奇怪了,为什么没有了password字段呢,没有了password字段,这个功能该怎么补充呢

    MySQL5.6中查看mysql.user的数据结果如下:

    > select user,password,authentication_string from mysql.user;               
    | user           | password               | authentication_string |
    | app_live_im    | *E96DB97255EF3ED52454A10EDA1AE7BABC8D3700 |    |
    | mysqlmon       | *0571D080430BC7B60A3F4D41A8D71501E6B8FDAA |    | 而在MySQL 5.7中,结果却有所不同

    +-----------------+-------------------------------------------+
    | user            | authentication_string                     |
    +-----------------+-------------------------------------------+
    | gym             | *0CD6502815166F2C7E17B630C3248B900065FCEA |
    | actv_test       | *82A4DC7B3F5E73E822529E9EF4DE8C042253445A |一个重要差别就在于mysql.user表的字段值 plugin

     max_connections: 0
      max_user_connections: 0
                    plugin: mysql_native_password
     authentication_string:
          password_expired: N
     password_last_changed: 2016-11-09 11:38:39
         password_lifetime: 0

     基于这个安全策略,可以做很多的事情,5.7默认就是这种模式。

       看起来之前的那种show grants得到的信息很有限,那么我们来看看pt工具的效果,直接运行./pt-show-grants即可

    -- Grants for 'webadmin'@'10.127.8.207'                             
    CREATE USER IF NOT EXISTS 'webadmin'@'10.127.8.207';  
    ALTER USER 'webadmin'@'10.127.8.207' IDENTIFIED WITH 'mysql_native_password' AS '*DA43F144DD67A3F00F086B0DA1288C1D5DA7251F' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
    GRANT ALL PRIVILEGES ON *.* TO 'webadmin'@'10.127.xx.xx';            

     这样的语句相对来说就是完整的,使用show grants的结果少了很多,只包含基本的权限信息。        

    > show grants for 'webadmin'@'10.12.20.133';
    | GRANT ALL PRIVILEGES ON *.* TO 'webadmin'@'10.12.xx.xxx' |   为什么使用pt工具能够得到更多,不是这个工具有多神奇,而是里面充分利用了新特性的东西。

    pt-show-grants里面是这样写的,对于MySQL 5.7的处理方式。

          # If MySQL 5.7.6+ then we need to use SHOW CREATE USER
          my @create_user;
          if ( VersionCompare::cmp($version, '5.7.6') >= 0 ) {
             eval {
                @create_user = @{ $dbh->selectcol_arrayref("SHOW CREATE USER $user_host") };
             };
             if ( $EVAL_ERROR ) {
                PTDEBUG && _d($EVAL_ERROR);
                $exit_status = 1;
             }
             PTDEBUG && _d('CreateUser:', Dumper(\@create_user));
             # make this replication safe converting the CREATE USER into
             # CREATE USER IF NOT EXISTS and then doing an ALTER USER
                my $create = $create_user[0];
                my $alter  = $create;
                $create =~ s{CREATE USER}{CREATE USER IF NOT EXISTS};
                $create =~ s{ IDENTIFIED .*}{};
                $alter  =~ s{CREATE USER}{ALTER USER};
                @create_user = ( $create, $alter );
                PTDEBUG && _d('AdjustedCreateUser:', Dumper(\@create_user));
          }

    简化一下就是使用show create user这种方式,在这个基础上额外补充一下,使得这个语句更加健壮。

    我们使用show create user 'webadmin'@'10.12.20.133'得到的结果如下:

    | CREATE USER 'webadmin'@'10.12.20.133' IDENTIFIED WITH 'mysql_native_password' AS '*DA43F144DD67A3F00F086B0DA1288C1D5DA7251F' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK |

    语句看起来丰满了很多,但是似乎还是少了些权限的信息,

    这是因为5.7里面完整的信息是通过show create user和show grants for 'xx'这两种方式完成的,而在5.6中只需要通过show grants for 'xxx’即可。
       明白了原委和解决方法,这个问题处理起来其实就很简单了。





    展开全文
  • 使用Entity Framework开发数据业务系统时,使用了MySQL数据库,ADO.NET driver...下载的提供程序,开发环境安装该提供程序后,该安装程序将修改系统配置文件“C:\Windows\Microsoft.NET\Framework\v2.0.50727\C

    在使用Entity Framework开发数据业务系统时,使用了MySQL数据库,ADO.NET driver for MySQL使用官网http://www.mysql.com/downloads/connector/net/中下载的提供程序,在开发环境中安装该提供程序后,该安装程序将修改系统配置文件“C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config”,修改后的文件段如下:

    隐藏行号 复制代码 这是一段程序代码。
    1. <system.data>
      
    2.   <DbProviderFactories>
      
    3.     <add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      
    4.     <add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      
    5.     <add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      
    6.     <add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      
    7.     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.2.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
      
    8.   </DbProviderFactories>
      
    9. </system.data>
      

    配置节”<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"…”是安装程序添加的,默认主机环境中没有该配置节。

    当发布程序到目标主机时,没有该配置节时,应用程序将弹出异常,所以我们需要想办法修改目标主机上的配置将上面的配置节添加进去,可行的办法有一下几种:

    1、在可执行程序的配置文件中添加该配置段。

    此方法带来的后果是,在开发主机上调试程序变得非常不方便,因为该配置信息在系统中只能出现一次,如果配置文件加载配置是发现有两个相同段的配置(一个位于上文提到的machine.config中,一个位于你要调试的程序demo.exe.config中),程序将发生异常无法调试,有解决方法就是在调试时将该该配置段暂时注释,发布时取消注释,但是这样的反复操作太令人痛苦了,所以此方法建议不采用。

    2、程序启动时修改“machine.config”配置文件,添加配置段。

    此方法经验证部分可行,因为程序要修改该的配置文件存在于系统路径下,有文件保护,需要有授权才能访问并修改该文件,而授权又是相当繁琐的过程。所以此方法建议不采用。

    3、在安装程序中自定义安装过程,在该过程中修改“machine.config”配置文件。

    此方法屏蔽了方法2的授权过程,因为安装程序自身有权限修改任何文件,所以此方法为最佳方法。实现步骤如下,在主输出项目中添加一个继承自“Installer”类的子类,重载方法“ public override void Commit(IDictionary savedState)”,在该方法体内实现将配置节添加到“machine.config”配置文件中,然后在安装项目中自定义安装过程。

     

    自定义安装类:

    隐藏行号 复制代码 这是一段程序代码。
    1. using System;
      
    2. using System.Collections;
      
    3. using System.ComponentModel;
      
    4. using System.Configuration.Install;
      
    5. using System.IO;
      
    6. using System.Linq;
      
    7. using System.Reflection;
      
    8. using System.Xml.Linq;
      
    9. using System.Diagnostics;
      
    10. using System.Windows.Forms;
      
    11. 
      
    12. namespace Freemansoft.Csm
      
    13. {
      
    14.     /// <summary>
      
    15.     /// 自定义安装。
      
    16.     /// </summary>
      
    17.     [RunInstaller(true)]
      
    18.     public partial class CsmInstaller : Installer
      
    19.     {
      
    20.         /// <summary>
      
    21.         /// 构造方法。
      
    22.         /// </summary>
      
    23.         public CsmInstaller()
      
    24.         {
      
    25.             InitializeComponent();
      
    26.         }
      
    27. 
      
    28.         /// <summary>
      
    29.         /// 重载提交。
      
    30.         /// </summary>
      
    31.         public override void Commit(IDictionary savedState)
      
    32.         {
      
    33.             base.Commit(savedState);
      
    34. 
      
    35.             CreateUnInstallBat();
      
    36.             CreateMySQLProviderSection();
      
    37.         }
      
    38. 
      
    39.         /// <summary>
      
    40.         /// 创建“MySQL数据库”数据提供程序配置段。
      
    41.         /// </summary>
      
    42.         private static void CreateMySQLProviderSection()
      
    43.         {
      
    44.             string invarientValue = "MySql.Data.MySqlClient";
      
    45.             string machineCfgFileName = @"C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config";
      
    46.             string name = "MySQL Data Provider";
      
    47.             string description = ".Net Framework Data Provider for MySQL";
      
    48.             string type = "MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.2.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d";
      
    49. 
      
    50.             XDocument document = XDocument.Load(machineCfgFileName);
      
    51.             if (document != null)
      
    52.             {
      
    53.                 XElement element = document.Root.Element("system.data");
      
    54.                 if (element != null)
      
    55.                 {
      
    56.                     element = element.Element("DbProviderFactories");
      
    57.                     if (element != null)
      
    58.                     {
      
    59.                         if (element.Elements().FirstOrDefault(a =>
      
    60.                             a.Attribute("invariant").Value == invarientValue) == null)
      
    61.                         {
      
    62.                             element.Add(new XElement("add",
      
    63.                                 new XAttribute("name", name),
      
    64.                                 new XAttribute("invariant", invarientValue),
      
    65.                                 new XAttribute("description", description),
      
    66.                                 new XAttribute("type", type)));
      
    67. 
      
    68.                             document.Save(machineCfgFileName);
      
    69.                             Logging.Logger.Inform("Add the mysql data provider configuration to the " + machineCfgFileName);
      
    70.                         }
      
    71.                     }
      
    72.                 }
      
    73.             }
      
    74.         }
      
    75. 
      
    76.         /// <summary>
      
    77.         /// 创建卸载批处理文件。
      
    78.         /// </summary>
      
    79.         protected void CreateUnInstallBat()
      
    80.         {
      
    81.             string dir = GetTargetDirectory();
      
    82. 
      
    83.             FileStream fs = new FileStream(dir + "UnInstall.bat", FileMode.Create);
      
    84.             StreamWriter sw = new StreamWriter(fs);
      
    85.             sw.WriteLine("@echo off");
      
    86.             sw.WriteLine(@"C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -u " + Path.Combine(GetTargetDirectory(), "DbSynchronization.exe"));
      
    87.             sw.WriteLine(string.Format("start /normal %windir%\\system32\\msiexec /x {0}", base.Context.Parameters["productCode"].ToString()));
      
    88. 
      
    89.             sw.WriteLine("exit");
      
    90.             sw.Flush();
      
    91.             sw.Close();
      
    92.             fs.Close();
      
    93.         }
      
    94. 
      
    95.         /// <summary>
      
    96.         /// 获取安装目标目录。
      
    97.         /// </summary>
      
    98.         protected string GetTargetDirectory()
      
    99.         {
      
    100.             string directory = Path.GetDirectoryName(base.Context.Parameters["assemblypath"].ToString());
      
    101.             if (directory[directory.Length - 1] != Path.DirectorySeparatorChar)
      
    102.             {
      
    103.                 directory += Path.DirectorySeparatorChar;
      
    104.             }
      
    105.             return directory;
      
    106.         }
      
    107.     }
      
    108. }
      
    109. 
      

     

    安装项目自定义过程:

    image

    展开全文
  • mysql-如何在Workbench区分数据库连接 用途 连接mysql数据库的连接较多时,需要区分各个连接的用途,除了通过用户名来区分以外,本文讲解如何通过jdbc扩展属性来识别数据库连接信息 默认连接方式 DriverManager....
  • 昨天同事问我如何在mysql中给查询的结果添加序号列。一时有点懵逼,网上搜索答案,找到以下信息: 二.解决方案: 1.法一: select (@i:=@i+1) i,a.url from base_api_resources a ,(select @i:=0) t2 order by a....
  • 一、确认数据库是否安全 因为重新设置MySQL的root密码的期间,数据库...进入文件后,[mysqld]标签下添加:skip-grant-tables 然后wq!保存并且退出vi。 三、重新启动MySQL数据库 service mysqld restart 四、登
  • 通过对表设置编码格式 设置表的右括号那里不直接写分号 而是 添加一条 DEFAULT CHARSET =utf8再写分号 可以解决中文输入乱码问题
  • 方法一:防止表出现重复数据当表添加数据时,可以在MySQL数据表设置指定的字段为PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。 例如在学生信息表中学号no不允许重复,需设...
  • mysql添加触发器

    2020-01-10 10:49:49
    @mySql添加触发器 关于mysql管理Navicta,如何添加触发器 比如:需要student中添加一个触发器,使得删除了student信息表时,grade表中对应的成绩数据删除。 表->设计表->触发器 ...
  • 在MySQL中,当我们所要查询的结果集没有ID字段时,为方便前台展示等业务需求,需要添加一个自增的序号字段(ID)。语法如下: SELECT (@i:=@i+1) 别名1,表字段信息 FROM 表名, (SELECT @i:=0) AS 别名2   &...
  • 对于常规的MySQL数据表...当表添加数据时,可以在MySQL数据表设置指定的字段为PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。 例如在学生信息表中学号no不允许重复,需设置学号no为...
  • Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令,如果没有添加到环境变量之前,执行“php -v”命令查看当前php版本信息时时,则会提示命令不存在的错误,下面我们...
  • so~ [mysqld] 的配置项下添加 skip-grant-tables 方法失败 方案2: 使用sudo mysqld_safe --user=mysql --skip-grant-tables --skip-networking & sudo mysql -u root mysql 到这报错如下 ERROR 2002 ...
  • 如何通过PHP将excel的数据导入MySQL中 开发PHP程序时,很多时候我们会有将数据批量导入数据库的需求,如学生信息批量添加到数据库中,而事先用excel编排好,对excel实行操作,便是我们比较常用的选择方式。 ...
  • MYSQL中文手册

    2013-03-11 21:21:34
    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. ...
  • # # **如何在网站创建用户使得用户数据能传到MySql数据库,并能够在数据库表查看在前台传过来添加的用户数据信息?(我试过添加,可能是不知道如何关联数据库,添加好了没反应,前台用户这里也没出现新添加的...
  • Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令,如果没有添加到环境变量之前,执行“php -v”命令查看当前php版本信息时时,则会提示命令不存在的错误,下面我们...
  • Winform程序,进行添加功能,保存时,系统给出异常信息”Incorrect string value: ‘\xACQ\xCE\xC4\xD7\xAA…’ for column ‘TaskDes’ at rows“,网上查了很多资料,最终解决了,数据库方面又长见识了,高兴!...
  • 方法一:防止表出现重复数据当表添加数据时,可以在MySQL数据表设置指定的字段为PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。 例如在学生信息表中学号no不允许重复,需设...
  • 在mysql的配置文件里边添加了一个MySQL的错误日志的配置项 然后重启MySQL的容器就重启不起来 发现问题 使用docker logs 容器ID 查看错误信息 会发现是是配置的错误日志文件没有权限 解决问题 把容器里边的MyS...
  • 实训第二周今天我想写一些sql 语句。但是发现中文根本显示不了。原因大家都明白肯定是字符集的...my.cnf为mysql的配置文档,这里可以将字符集的信息进行更改。 [client]节点下添加 default-character-set=utf8 ...
  • 对于常规的MySQL数据表...当表添加数据时,可以在MySQL数据表设置指定的字段为PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。 例如在学生信息表中学号no不允许重复,需设置学号no为...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 368
精华内容 147
关键字:

如何在mysql中添加信息

mysql 订阅