MySQL升级:从4.1到5.0
提示:在安装任何新版本的软件之前,最好备份一下你的数据。尽管mysql已经最大限度的保证高质量服务,但当你使用软件的测试发布版本时,你还是应该采取备份的方式来保护你的数据。大体来说,在从mysql从4.1升级到5.0时,你需要做得主要包括以下几个步骤: 这
提示:在安装任何新版本的软件之前,最好备份一下你的数据。尽管mysql已经最大限度的保证高质量服务,但当你使用软件的测试发布版本时,你还是应该采取备份的方式来保护你的数据。大体来说,在从mysql从4.1升级到5.0时,你需要做得主要包括以下几个步骤:•这部分主要检查稍后建立起的修改列表里的表项,目的是为了查找其中是否存在会影响你的应用程序的表项。这里具体要注意哪些标志着Incompatible change的选项;这些会造成与Mysql早期版本不匹配,并且应该在更新之前引起你的注意。
•阅读MySQL 5.0的历史进程,理解你在5.0中能够使用的重要的新特征。可以参阅Section D.1, “Changes in release 5.0.x (Production)”
•如果你是在Windows下运行Mysql 服务器,请参阅Section 2.3.15, “Upgrading MySQL on Windows”部分。同时你也应该注意到Windows下的Mysql服务器中有两个是重新命名的,具体可以参阅Section 2.3.9, “Selecting a MySQL Server type”
•MySQL 5.0增加了对于存储信息的程序的支持。该项支持需要在你的mysql数据库中的proc数据表。为了生成该文件,你应该运行mysql_fix_privilege_tables脚本,有关该脚本的描述,请参阅Section 2.10.3, “Upgrading the Grant Tables”。
•MySQL5.0添加了浏览功能。该项支持需要在mysql数据库中的user和db表格中添加额外的特殊权限列。为了生成这些列,你应该运行mysql_fix_privilege_tables脚本,具体的描述见Section 2.10.3, “Upgrading the Grant Tables”.
•如果你使用复制功能,请参阅Section 6.6, “Upgrading a Replication Setup”,该部分主要提供了升级你的复制设置的相关信息。 几个可视化行为已经在MySQL 4.1和MySQL5.0之间被改变,目的是为了保证MySQL和标准SQL的兼容性。这些改变有可能影响你的应用程序。 下面的列项主要描述了有可能影响应用程序的变化,因此你应该在将MySQL更新到版本5.0之前特别注意这些列项。
几个变化:
•不兼容变化:对于InnoDB和MyISAM表格的TEXT列中的末端空间的索引顺序改变了。从版本5.0.3开始,TEXT索引被看作是末尾的填补空间部分(如同MySQL的数据类型中的char、VARCHAR和TEXT域)。如果你在文本列中有一个索引,那么你应该在其上运行CHECK TABLE命令。如果该检查报错,则需重建索引:如果是一个InnoDB表格,则清除并重新装载该表格,如果它是个MyISAM表格则运行OPTIMIZE TABLE 或者 REPAIR TABLE命令。
•不兼容变化:含有DECIMAL 列的MyISAM 和InnoDB表格将会在升级到MySQL 5.0.6后出现损坏。在更新之前,要先将这些表格采用mysqldump进行清除,同时在更新之后重新装载它们。(当在MySQL5.0.6中生成的这些表格在较低版本如MySQL 5.0.3到 5.0.5中使用时,同样的不匹配情况会发生)
•不兼容变化:对于MySQL 5.0.3,服务器默认不再加载用户定义的函数除非它们除了主函数符号外至少还有一个辅助标记(例如,xxx_init或者xxx_deinit符号)。该行为可以被--allow-suspicious-udfs选项所忽略。可参阅Section 25.2.3.6, “User-Defined Function Security Precautions”.
•不兼容变化:在MySQL 5.0中更新日志将会被删除掉。如果你事先把它激活的话,你实际上激活的是二进制日志。
•不兼容变化:对于ISAM存储机制的支持已经被删除掉。如果你有任何的ISAM表格,你应该在更新之前对其进行转换。例如将一个ISAM表格转化成使用MyISAM存储机制,可使用以下的声明实现:
ALTER TABLE tbl_name ENGINE = MyISAM; 你数据库中的其他ISAM表格的处理与此相同。
•不兼容变化:在MySQL 5.0中,对于MyISAM表格的RAID选项的支持已被删除。如果你有使用这些选项的表格,你应该在更新之前对其进行转换。一种方法是采取mysqldump命令清除这些表格,编辑dump文件以删除在CREATE TABLE声明中RAID选项,同时重新加载dump文件。另一种方法是使用CREATE TABLE new_tbl ... SELECT raid_tbl声明来制造一个新的RAID表格。然而,该声明中的CREATE TABLE部分必须含有足够的信息来重新生成列和索引的属性,否则列和索引的属性有可能丢失,而不会出现在新表格当中。可参阅Section 13.1.5, “CREATE TABLE Syntax”。
•在一个具体的数据库中,对于RAID表格的.MYD文件存储在数据库目录下,而该目录是在名字含有两个16进制位(即00至ff)数值的子目录中的。在对所有使用RAID选项的表格进行转换后,这些RAID-相关的子目录可能依然存在但是是可以被删除的。在证明他们确实是空的之后,可以手工将他们删除。(如果它们非空的话,则说明有一些RAID表格尚未被转换)。
•在MySQL 5.0.6中,存储例程和触发器的二进制日志已经发生了变化。这个变化主要涉及到安全,复制,数据恢复,有关这方面的讨论请见Section 18.4, “Binary Logging of Stored Routines and Triggers”. 。
SQL 的变化:
•不兼容变化:在MySQL 5.0.10对于触发器的命名空间已经改变。以前的版本中,每个表格中,触发器的名字是唯一的。现在对于schema(数据库)必须是唯一的。这种改变的潜在原因是DROP TRIGGER语法现在使用schema名字而不是表格名(schema在可忽略的情况下是被选择的,即当前的schema将会被使用)。当从以前的版本MySQL 5更新到MySQL5.0.10或者更新的版本时,你必须删除所有的触发器并且重新生成他们,否则的话,在更新之后,DROP TRIGGER将不会起作用。为了实现这个目的,我们特别提供了以下参考步骤:
1 将MySQL版本升级至5.0.10以能够访问INFORMATION_SCHEMA.TRIGGERS表格中的触发器信息(它应该对于5.0.10以前版本的触发器同样有效。)
2 使用下面的SELECT声明来删除所有的触发器定义
SELECT CONCAT('CREATE TRIGGER ', t.TRIGGER_SCHEMA, '.', t.TRIGGER_NAME,' ', t.ACTION_TIMING, ' ', t.EVENT_MANIPULATION , ' ON ', t.EVENT_OBJECT_SCHEMA, '.', t.EVENT_OBJECT_TABLE' FOR EACH ROW ', t.ACTION_STATEMENT, '//' )
INTO OUTFILE '/tmp/triggers.sql'
FROM INFORMATION_SCHEMA.TRIGGERS AS t;
该声明使用INTO OUTFILE,所以你必须拥有FILE权限。该文件将会被在服务器主机上生成;可以根据你的喜好,来选择一个不同的文件名。为了绝对的安全,检查triggers.sql文件中的触发器定义,如果必要的话,对该文件进行一下备份。
1停止服务器同时通过删除你数据库目录中所有的.TRG文件来删除所有的触发器。改变当前路径到你数据库的目录下,同时输入命令如下: shell> rm */*.TRG
2启动服务器,同时使用triggers.sql文件重新生成所有的触发器。在本例子当中,命令如下:
1.mysql> delimiter // ; 2.mysql> source /tmp/triggers.sql // 3使用SHOW TRIGGERS声明来检查是否所有的触发器成功生成。
o CHAR(ORD('A')) = 'a' is no longer true: omysql> SELECT CHAR(ORD('A')) = 'a'; o+----------------------+ o| CHAR(ORD('A')) = 'a' | o+----------------------+ o| 0 | o+----------------------+
mysql> SELEC CHAR(ORD('A') USING latin1) = 'a'; +-----------------------------------+ | CHAR(ORD('A') USING latin1) = 'a' | +-----------------------------------+ | 1 | +-----------------------------------+ mysql> SELECT CONVERT(CHAR(ORD('A')) USING latin1) = 'a'; +--------------------------------------------+ | CONVERT(CHAR(ORD('A')) USING latin1) = 'a' | +--------------------------------------------+ | 1 | +--------------------------------------------+
o在以前的版本中,下面的声明将0x00410041('AA'作为ucs2字符串)插入到表格中,而对于MySQL 5.0.15,声明采取0x414值来插入一个ucs2字符。
oCREATE TABLE t (ucs2_column CHAR(2) CHARACTER SET ucs2);
oINSERT INTO t VALUES (CHAR(0x41,0x41));
•不兼容变化:从MySQL 5.0.12开始,自然连接和使用USING命令的连接包括外部连接变量,通过SQL:2003标准来进行处理的。这个改变包括对NATURAL和使用USING语句的连接去除多余的输出列,同时规范输出列表的次序。现在逗号操作符的优先级仍然低于JOIN。
•小数点数列以一种更为有效的格式进行存储。为了将一个表格转换为使用新的DECIMAL(浮点数)类型,你应该在它上面执行一个ALTER TABLE命令。ALTER TABLE命令也改变了表格的VARCHAR列以能够使用新的VARCHAR列类型。对于和原有的应用程序可能不匹配的信息,可查阅Chapter 22, Precision Math
•MySQL 5.0.3及更高的版本在计算点数值时使用数字精度集(64位浮点数)同时回绕精确的数字。可参见Chapter 22, Precision Math
•对于MySQL 5.0.3,结尾空间将不再被从VARCHAR和VARBINARY列中移除,在MySQL 5.0.3和后续版本,对于VARCHAR 和VARBINARY列的最大长度是65,535字符和65,535字节。
注意:如果你在MySQL 5.0.3或者后续版本中,你生成了含有新的VARCHAR或者r VARBINARY列的表,那这些表格将在低于MySQL 5.0.3版本中不起作用。在降级之前将这些表格清除掉,同时在降级之后对其进行重载。
•对于MySQL 5.0.3,BIT是一个单独的数据类型,而不是TINYINT(1)的同义。可参阅Section 11.1.1, “Overview of Numeric Types”
•MySQL 5.0.2添加了几个用于更加严格控制丢弃含有不合法或者丢失数值的记录。可参阅Section 5.3.2, “The Server SQL Mode”. 和Section 1.8.6.2, “Constraints on Invalid Data”。如果你想激活这项控制但同时继续使用存储的不正确日期,例如'2004-02-31',你应该采取--sql_mode=TRADITIONAL,ALLOW_INVALID_DATES启动服务器。
•对于MySQL 5.0.2,SCHEMA和SCHEMAS关键字被分别当作DATABASE和DATABASES同义字所接受。(然而“schemata”是语法正确的,同时有可能出现在MySQL 5.0的系统数据库和数据表格名字中,因此它能够被作为一个输出的关键字使用)
•在MySQL 5.0,用户变量是不区分大小写的。在MySQL 4.1中,SET @x = 0; SET @X = 1; SELECT @x;生成两个变量同时返回0.而在MySQL 5.0,该命令生成一个变量同时返回1.
•一个名字为innodb_table_locks启动选择项被添加了进来,该选项可能导致LOCK TABLE同时也需要InnoDB表格锁。该选项默认是被激活的。这有可能导致使用AUTOCOMMIT=1和 LOCK TABLES的应用程序死锁。如果你的应用程序在升级之后遇到死锁的情况,你可能需要添加innodb_table_locks=0到你的my.cnf文件。
C API 改变:
• 因为MySQL 5.0服务器有对小数类型的数据有一种新的执行功能,如果该服务器被一些仍由MySQL4.1版本的客户程序库链接而成的老版本客户程序所使用,就会出现一个问题,如果一个客户使用二进制客户机程序/服务器协议来执行准备好的能产生数值结果的声明,就会出现错误提示:错误发生的原因是4.1版本客户程序库并不支持在5.0版本中增加的新MYSQL_TYPE_NEWDECIMAL类型。而服务器这端,却没有屏蔽这种新的小数数据类型的途径。你可以通过和来自MySQL 5.0的客户端库的应用程序进行重链接来避免这个问题。
• MYSQL结构中的再连接标志可以通过mysql_real_connect()设置为0。而只有那些在进行mysql_real_connect()以后没有明确的把标志设为0或1的客户端程序才会发生变化。默认情况下自动重新连接是被认为是危险的(主要是由于表格锁,临时表格,用户变量以及会话变量在重新连接后有可能被丢失)。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Laravel은 웹 응용 프로그램을 쉽게 구축하기위한 PHP 프레임 워크입니다. 설치 : Composer를 사용하여 전 세계적으로 Laravel CLI를 설치하고 프로젝트 디렉토리에서 응용 프로그램을 작성하는 등 다양한 기능을 제공합니다. 라우팅 : Routes/Web.php에서 URL과 핸들러 간의 관계를 정의하십시오. 보기 : 리소스/뷰에서보기를 작성하여 응용 프로그램의 인터페이스를 렌더링합니다. 데이터베이스 통합 : MySQL과 같은 데이터베이스와 상자 외 통합을 제공하고 마이그레이션을 사용하여 테이블을 작성하고 수정합니다. 모델 및 컨트롤러 : 모델은 데이터베이스 엔티티를 나타내고 컨트롤러는 HTTP 요청을 처리합니다.

MySQL 및 Phpmyadmin은 강력한 데이터베이스 관리 도구입니다. 1) MySQL은 데이터베이스 및 테이블을 작성하고 DML 및 SQL 쿼리를 실행하는 데 사용됩니다. 2) PHPMYADMIN은 데이터베이스 관리, 테이블 구조 관리, 데이터 운영 및 사용자 권한 관리에 직관적 인 인터페이스를 제공합니다.

다른 프로그래밍 언어와 비교할 때 MySQL은 주로 데이터를 저장하고 관리하는 데 사용되는 반면 Python, Java 및 C와 같은 다른 언어는 논리적 처리 및 응용 프로그램 개발에 사용됩니다. MySQL은 데이터 관리 요구에 적합한 고성능, 확장 성 및 크로스 플랫폼 지원으로 유명하며 다른 언어는 데이터 분석, 엔터프라이즈 애플리케이션 및 시스템 프로그래밍과 같은 해당 분야에서 이점이 있습니다.

작은 응용 프로그램을 개발할 때 까다로운 문제가 발생했습니다. 가벼운 데이터베이스 운영 라이브러리를 신속하게 통합해야합니다. 여러 라이브러리를 시도한 후에는 기능이 너무 많거나 호환되지 않는다는 것을 알았습니다. 결국, 나는 내 문제를 완벽하게 해결하는 YII2를 기반으로 단순화 된 버전 인 Minii/DB를 발견했습니다.

기사 요약 :이 기사는 Laravel 프레임 워크를 쉽게 설치하는 방법에 대한 독자들을 안내하기위한 자세한 단계별 지침을 제공합니다. Laravel은 웹 애플리케이션의 개발 프로세스를 가속화하는 강력한 PHP 프레임 워크입니다. 이 자습서는 시스템 요구 사항에서 데이터베이스 구성 및 라우팅 설정에 이르기까지 설치 프로세스를 다룹니다. 이러한 단계를 수행함으로써 독자들은 라벨 프로젝트를위한 탄탄한 토대를 빠르고 효율적으로 놓을 수 있습니다.

MySQL의 기본 작업에는 데이터베이스, 테이블 작성 및 SQL을 사용하여 데이터에서 CRUD 작업을 수행하는 것이 포함됩니다. 1. 데이터베이스 생성 : createAbasemy_first_db; 2. 테이블 만들기 : CreateTableBooks (idintauto_incrementprimarykey, titlevarchar (100) notnull, authorvarchar (100) notnull, published_yearint); 3. 데이터 삽입 : InsertIntobooks (Title, Author, Published_year) VA

Thelia를 사용하여 전자 상거래 웹 사이트를 개발할 때 까다로운 문제가 발생했습니다. MySQL 모드가 제대로 설정되지 않아 일부 기능이 제대로 작동하지 않습니다. 약간의 탐색 후, 나는 theliamysqlmodeschecker라는 모듈을 발견했습니다.이 모듈은 Thelia가 요구하는 MySQL 패턴을 자동으로 수정하여 내 문제를 완전히 해결할 수 있습니다.

MySQL은 테이블 구조 및 SQL 쿼리를 통해 구조화 된 데이터를 효율적으로 관리하고 외래 키를 통해 테이블 간 관계를 구현합니다. 1. 테이블을 만들 때 데이터 형식을 정의하고 입력하십시오. 2. 외래 키를 사용하여 테이블 간의 관계를 설정하십시오. 3. 인덱싱 및 쿼리 최적화를 통해 성능을 향상시킵니다. 4. 데이터 보안 및 성능 최적화를 보장하기 위해 데이터베이스를 정기적으로 백업 및 모니터링합니다.
