重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
数据库部分是不是把datadir目录下的所有文件拷贝过去,还有my.ini或者my.cnf文件拷贝过去,这个数据库就可以正常运行了?有没有真正时间过的朋友?
创新互联建站是一家集网站建设,海城企业网站建设,海城品牌网站建设,网站定制,海城网站建设报价,网络营销,网络优化,海城网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
我从帮助上看到,上面这个方法的一个必要条件是目标机器和我的机器的浮点数类型一致,请问这个是什么意思?是不是兼容x86的cpu都是一致的?无论是intel还是AMD.
2,请问大家使用什么方式连接mysql数据库,我使用的是myODBC,听说还有OLEDB,有没有用过的朋友?那个好?
附:
将 InnoDB 数据库移动到另一台机器中
只要机器的的浮点数格式一致,那 InnoDB 的数据和日志文件在任何平台上均是二进制兼容的。 你可以通过简单地复制所有相关文件的方式来移动一个 InnoDB 数据库,方法 已在上面的章节中给以描述。如果在两台机器上浮点格式是不同的,但是你没有在你的表中使用 FLOAT 或 DOUBLE 数据类型,那么也可以使用这种方法:仅仅是复制相关文件。如果机器的格式不同而又使用了浮点数据,那么你不得不通过使用 mysqldump 和 mysqlimport 来移动那些表。
当向数据库中导入数据时最好将自动提交(autocommit)开关关闭将提高性能,如果插入事务用尽所有可用表空间将会引起大的大的回滚。建议在插入完整个表或表片段后再提交事务。
------Solutions------
你存成SQL语句发布不就可以了吗?
------Solutions------
服务器端需要安装MySQL,其实你看看自己装的MySQL,是MySQL Server and Client。
至于字节顺序,MyISAM的平台无关性表示不受直接顺序的影响。InnoDB表就不一样了,因为它的数据库整个是一个二进制数据的文件,不同架构的计算机肯定不能兼容。这里,不同架构一般是指Intel体系和Alpha、PowerPC等其他CPU的区别。
但是,实际上没有说把文件拷贝了来发布数据库内容的,一般程序不包括数据库内容,只包括结构,如果有内容,通过导入、导出就行了,没那么麻烦。
我使用MySQL C API连接据库,效率高、发布方便(都链接好了)。
------Solutions------
谢谢 Mackz(在相互)
用程序来初始化,我也考虑过,但有一个问题,如果root用户的密码被
不怀好意的人掌握,他可以通过看processlist来看到你的所有初始化过程,
包括修改密码动作,我想到了解决办法,但是还没有实践。
另外,我使用的是VB开发,你说的mysql C API是不是直接
连接?是否是用C来开发才可以用的,
如果让我用C来开发,我想我会疯的。
------Solutions------
VB
就用 MyODBC 吧,
建议用 Delphi ,
------Solutions------
问题很简单,1安装程序先安装myxql 2 执行sql语句建立数据库和表,3 用mysql 的loadfile 从文本文件里道入你要的数据,用C 接口一点也不麻烦,myodbc的效率损失太大
------Solutions------
谢谢 kkk3k3k() 老兄指点,我在实践中发现处理办法比你说的还简单。我的做法是:
1,把文件(包括数据文件)拷贝到安装路径。
2,修改my.ini文件
3,运行mysqld-nt --install注册服务
我现在的程序是VB做的,使用ADO,目前测试记录在20000左右,觉得速度还可以。
对于用C来写程序,我比较感兴趣,因为我想在做报表统计分析的时候使用,
也许可以提高速度。
有个问题想请教?使用C接口就不用通过myodbc?如果服务器和客户端在一台机器上,
用C不通过odbc可以访问数据库吗?
------Solutions------
使用linux的sock连接,连接性能通常可以提高30%左右!
在数据移植过程中,通常直接复制文件是最快的,但如果是从win32移到linux系统中,请确认移植后的所有myi,myd文件后缀名为大写,否则系统会提示数据库损坏!
------Solutions------
系统数据复制过程中,如果主机数据库不能停止使用,如果此时库中使用的是不是innodb格式,建议采用系统热备份的形式来实现。如使用的是innodb格式,目前无办法,听说5.0可以解决!
------Solutions------
系统热备份?如何实现,有文章吗?
是通过系统(比如说linux)还是mysql本身
------Solutions------
系统热备份不是免费的,记得上面有这方面的资料
------Solutions------
如果青春之歌开发的不是遵循GPL的软件,就这种行为我有充分的理由把他列入黑名单。
------Solutions------
系统热备份是免费的!
------Solutions------
系统热备份是免费的!自己看manual.html之replication!
------Solutions------
除了innodb的热备份是收费的,他是另外专门开发的。
------Solutions------
的确是免费的,我也看了。
可能我以前看到热备份是第三方的商业软件
------Solutions------
呵呵,这一类数据热备份程序与MIS系统应用比起来要简单得多了,
大伙在做系统时完全可以自己编程来实现,
:)
对于数据库的备份方式 ,
一般来说可分为两大类,
1、 数据导入与导出
2、 直接复制数据库表二进制文件,
第一种方式是在数据库服务不停止的状态下进行数据备份的,
第二种方式必须将数据库服务停止
第一种方式转储的数据是以一个文本文件的方式保存的,但数据被损坏时很容易看得出来
第二种方式数据是以一个二进制文件形式保存的,当数据被损坏时不容易被发现
第一种方式可以将数据恢复到任何一个系统平台上,
第二种方式却有所限止
如果使用的是 MySQL 3.23,
对于 MyISAM 表,如果两种系统的体系结构支持同样的
浮点格式,那就可以直接将 `.frm', `.MYI', and `.MYD' 文件拷贝过去,
否则需要使用数据导出
对于 ISAM 表,只要是在两种不同的系统或不同的体系结构之间移动数据,
就必须使用数据导出与导入
而对于 InnoDB 表, 只要机器的的浮点数格式一致,
那么数据和日志文件在任何平台上均是二进制兼容的。
你可以通过简单地复制所有相关文件的方式来移动一个 InnoDB 数据库,
并将 my.cnf 配置文件一同复制到新的系统中。
如果在两台机器上浮点格式是不同的,
但是你没有在你的表中使用 FLOAT 或 DOUBLE 数据类型,
那么也可以使用这种方法:仅仅是复制相关文件。
如果机器的格式不同而又使用了浮点数据,
那么你不得不通过使用 mysqldump 和 mysqlimport 来移动那些表。
上面都说了第一种方式的优点,
但是,第一种方式有一个最大的缺点就是:
当你在做转储时,为了保证数据是当前最新的,你不得不使用 LOCK TABLE !
在数据导入时,也是如此,因此这会阻塞其它用户的连接
它的备份与恢复速度比较慢,
第二种方式的备份与恢复速度很快,
通常,两种方式同时使用是被极力推荐的。
mysql密码不可以告诉别人。mysql默认的账户也是root,同linux一样也是超级管理员,权利特别大,所以不可以随便就把mysql密码告诉其他人。
如何往里面添加一个
字符型,长度为36
的字段?a:你需要把那个shows.myd
所在的那个文件夹拷贝到mysql安装目录的data目录下。
如果你是默认安装,应该在c:\program
files\mysql\mysql
server
5.0\data\
注意是整个shows那些文件所在的目录。连目录一起拷贝哈。按你的描述,就应该是data目录了。
将d:\data1\下的data目录拷贝到c:\program
files\mysql\mysql
server
5.0\data\下面。
完成之后,重启mysql看看,可以运行services.msc
在里面找到mysql
重新启动mysql。(前提是你安装的时候配置了mysql服务,我想你应该配置了吧)
重启之后
进入命令行,
然后mysql
-uroot
-p
进入mysql
show
databases;
看看能不能看到一个叫data数据库。
如果能看到,恭喜你,
继续下面的命令。
如果不行,看后面的方法b。
use
dataalter
table
shows
add
列名
类型
长度
等等举例:增加一个int型名为id的列
alter
table
shows
add
id
int(11)
not
null
default
'0';
alter
table
shows
add
name
varchar(32)
not
null
default
'';
如果需要指定列的位置,假如加入的列在number列后面。那么
alter
table
shows
add
id
int(11)
not
null
default
'0'
after
number;方法b。
如果按之前说的文件拷贝方式,重启进入mysql后看不到data
这个数据库,那么可能是你们的mysql版本不一致造成的,应该说这个可能性很大。
那么,你让你朋友给你导出数据库内容。
用mysqldump命令。
mysqldump
-uroot
-p
-d
数据库名.表名
sss.sql
你拿到这个sss.sql后
再把它导入到你的mysql数据库。
在cmd下运行
mysql
-uroot
-p
testsss.sql或者在mysql命令行下运行use
testsource
sss.sql
这样shows表就导入到你的test数据库了。
剩下的就简单了哈。和前面没啥差别。
思路:
1用户发送好友申请之后 把申请储存到申请数据表中,状态为 未验证
2 当用户登录时,查询申请表中是否有uid和被申请人id相同的,如果同意,更改状态,并把数据插入到对应的好友数据表否则,删除申请数据表中数据
3,当一方删除好友时,从被删除人中删除删除人的好友
4 创建分组名称字段,字段设定好值,让用户选择,或者让用户自定
5 当查询时候列出数据表信息
附:MySQL数据表 共两个
#以上步骤是对数据库的操作,你可以aclass="inner-link decor-unline"href="/search?word=实例化fr=qb_search_expie=gbk"target="_blank" rel="nofollow" data-word="2"实例化/a,
#好友表
a class="inner-link decor-unline"href="/search?word=mysql_queryfr=qb_search_expie=gbk"target="_blank" rel="nofollow" data-word="0"mysql_query/a("CREATE TABLE `t_friend` (
`id` int(11) NOT NULL auto_increment COMMENT '自增id',
`uid` int(11) NOT NULL COMMENT '用户id',
`fid` int(11) NOT NULL COMMENT '好友uid,用,分割,可以有多个',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#申请表
CREATE TABLE `t_shenqing` (
`id` int(11) NOT NULL auto_increment COMMENT '自增id',
`uid` int(11) NOT NULL COMMENT '被申请用户id userid',
`sid` int(11) NOT NULL COMMENT '好友申请人id',
`text` varchar(255) NOT NULL COMMENT '附言',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
");
每一次用户请求操作,就会对数据库进行一次查询或更新,
1.建立用户信息表
create table userinfo(id int(4) not null primary key, name varchar(20) not null unique key)engine=innodb default charset=utf8;
2.建立好友关系表
create table friend(uid int(4) not null, foreign key(uid) references
userinfo(id),fid int(4) not null, foreign key(fid) references
userinfo(id),unique key(uid,fid))engine=innodb default charset=utf8;
3.追加测试数据(满足uidfid条件)
insert userinfo values(1111---9999,'namea---namei’);
insert friend values(1111,4444---6666);
insert friend values(5555,6666---9999);
4.查询好友(5555的好友)
select * from friend where uid=5555 or fid=5555;
+-------+------+
| uid | fid |
+-------+------+
| 1111 | 5555 |
| 5555 | 6666 |
| 5555 | 7777 |
| 5555 | 8888 |
| 5555 | 9999 |
+-------+--------+
5.问题:
5.1.userinfo中的id和name不为null,且不可重复:table设计可以做到
5.2.friend中的uid和fid均不为null,且都来自于userinfo的id:table设计可以实现
5.3.(uid,fid)组合不可重复:table设计可以完成
5.4.好友关系的表达时,(1111,5555)和(5555,1111)有冗余,也会出现(1111,1111)这样的数据:这个在table设计实现比较麻烦,需要在程序层面实现,也即增加限制条件uidfid即可
6.结果:
table设计达不到要求,或者较难达到要求时,可以在程序层面予以弥补。