首页 > TAG信息列表 > alter-table

PHP PDO检查mySQL表中的多个列并创建不存在的列

寻找一种方法来检查数据库中的表是否已与所需的列组合在一起. 我建立这个功能: function verifydbtable($table,$fields){ global $fsdbh; foreach($fields as $field => $type){ $verify = $fsdbh->prepare("ALTER TABLE `$table` ADD `$field` $type;");

MySQL ALTER列到表中的最后位置

我正在与一个客户合作,该客户希望大型数据库中的每个表都具有每个记录的历史记录数据,并且为了美观起见,希望这些列位于每个表的末尾.例如: 表名 >主键 >数据列>历史列 所以我的问题是,是否有一条SQL命令将列移动到表的末尾?我更喜欢编写一个存储过程,以预定顺序将每个历史列移动到最

在没有表锁定的情况下在巨大的MySQL生产表上创建索引

我需要在~5M行MySQL表上创建索引.这是一个生产表,如果我运行一个CREATE INDEX语句,我担心一切都完整. 有没有办法创建该索引而不阻止插入和选择? 只是想知道我没有停止,创建索引并重新启动我的系统!解决方法:[2017]更新:MySQL 5.6支持在线索引更新 https://dev.mysql.com/doc/refman/5

mysql – 表的DROP列,根据另一个表中的值

我有桌子, 表A. field1 | field2 | field3 | field4 | field5 表B. id | field_names -------------------- 1 field2 2 field3 我必须从表A中删除field2和field3(表B中的字段名称). 是否有任何方法可以删除表B中的字段名称.我无法手动删除字段. 提前致谢解决

mysql – ‘字符集’和’默认字符集’之间的区别

陈述之间是否有任何区别 ALTER TABLE xxx DEFAULT CHARACTER SET utf8 和 ALTER TABLE xxx CHARACTER SET utf8? MySQL文档对DEFAULT关键字的功能保持沉默.解决方法:没有区别. DEFAULT是一个可选的关键字. 见:http://dev.mysql.com/doc/refman/5.6/en/charset-table.html. 在SQL中,不

ALTER TABLE FOREIGN KEY从java到mysql

好吧,我想在我的数据库中进行修改,所以我需要使用alter table,但java似乎有问题. 这是一句话 ALTER TABLE loans ADD FOREIGN KEY (id_reader) REFERENCES readers (id); 你怎么执行它? 我这样做: rawStatement="ALTER TABLE loans ADD FOREIGN KEY (id_reader) REFERENCES reader

mysql – 我的桌子什么时候最后更改了?

我正在使用mysql 5.1.41-3ubuntu12.10,并想知道我的表最后一次更改(或者CREATEd,如果它从未被更改过). SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA = SCHEMA(); 给出CREATE和最后更新时间,但不是AFAICT最后的ALTER时间.解决方法:答案在某种程度上取决于存储引擎.

mysql – 在没有停机的情况下将数据类型从mediumint更改为int

我当前的表使用MEDIUMINT作为ID列’主键自动增量’.当前表记录很快将达到mediumint的最大值8388607.在这种情况下,我需要将类型更改为int或将其更改为unsigned而不会出现任何停机. 我的设置是Amazon RDS上的主从MySQL 5.6.我有一个主人和4个奴隶. >我试图在slave上将列类型更改为in

mysql – 按指定列对表进行预排序

我有一个表,我总是通过订购一列来获取数据.在我的情况下,我按datenum订购.但是,由于订购,选择太慢. 是否可以在datenum之后订购表.此列定义为唯一.如果定义为索引,选择会更快吗?解决方法:>表格没有自然,隐含或内在的排序 >任何订单只能由最外面的ORDER BY保证 如果这很慢,那么你也可

mysql – 删除表的多个KEYS

在表中删除多个KEYS是首选选项还是逐个删除? “DROP KEY A,DROP KEY B,DROP KEY C” 表中有超过9亿条记录. 它在内部如何运作?解决方法:在一个SQL命令中删除多个索引更好.为什么? 场景#1 ALTER TABLE mytable DROP INDEX ndx1; ALTER TABLE mytable DROP INDEX ndx2; ALTER TABLE myt

我可以在一个查询中重命名MySQL ENUM列中的值吗?

假设我有一个带有ENUM的数据库表(‘value_one’,’value_two’). 我想将其更改为ENUM(‘第一个值’,’第二个值’).我目前这样做如下: ALTER TABLE `table` MODIFY `column` ENUM('value_one','value_two','First value','Second value'); UPDATE `table` SET `column`='Fi

mysql – 为什么我更喜欢ALGORITHM = COPY到ALGORITHM = INPLACE?

由于MySQL 5.6引入了在线DDL,因此ALTER TABLE命令可以选择指定ALGORITHM = INPLACE或ALGORITHM = COPY. overview of online DDL指出,默认情况下,尽可能使用INPLACE,并暗示(没有说明)INPLACE算法比COPY算法便宜. 那么我有什么理由在ALTER TABLE语句中指定ALGORITHM = COPY?解决方法:

mysql – 选择结果改变AUTO_INCREMENT值

基本上我想要的是以下代码的工作版本: ALTER TABLE table_name AUTO_INCREMENT = ( SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'database_name' AND TABLE_NAME = 'another_table_name' );

mysql – 非常慢的alter table(即使没有行)

我的Mysql设置有问题:我制作的每个alter table大约需要5分钟才能完成,即使表是完全空的. 有时查询甚至因超时而失败(错误2013:在查询SQL语句期间丢失了与MySQL服务器的连接:ALTER TABLE …). 此外,该表位于测试数据库中,因此不会同时进行其他查询. 我在12 CPU机器上使用Mysql 5.7,所以

MySQL在PHP中重命名列

我需要使用PHP重命名MySQL表中的列. 这很难,因为语法是ALTER TABLE [table] CHANGE COLUMN [oldname] [newname] [definition].该定义是必需参数. 有没有办法获取定义并简单地将其反馈到SQL语句中?一些示例代码会很棒,谢谢!解决方法:根据http://codingforums.com/showthread.php?t=14

使用MYSQL复制来加速架构更改和表格优化

我听说很多人使用主从安排有助于通过使用复制来设置新的临时主数据,然后在重新启动之前停止重定位然后交换角色来改善模式.我在堆栈溢出时发现了一个示例(如下). Setup slave Stop replication. Make ALTER on slave Let slave catch up the master swap master and slave, so s

需要MySQL 4来忽略ALTER TABLE错误

我有一个MySQL脚本,在某些条件下自动执行.该脚本执行ALTER TABLE命令,因为数据库中需要该列,但它可能有也可能没有… 如果列不存在,是否可以使MySQL 4执行ALTER TABLE语句或忽略此单个命令的重复列错误并允许脚本执行继续?解决方法:ALTER [IGNORE] TABLE将仅忽略某些错误,例如添加新

MySQL如果我改变列的话会发生什么?

我正在将我的AUTO_INCREMENT PRIMARY KEY ID列从INT更新为BIGINT.我正在使用带有InnoDB表的MySQL版本5.0.82.它们看起来像: FactTable +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------

Mysql Change Int默认值为零

嗨,我正在使用mysql工作laravel 5.我确实将zipcode存储到我的数据库中它运行良好但是当字段为空时它存储为零(0)但我想在数据库中存储空值. 我也使用alter table改变了mysql,如下所示 ALTER TABLE保险CHANGE COLUMN zipcode4 zipcode4 int(4)unsigned DEFAULT NULL;但它不会工作,有

mysql – 表锁是否会阻止行锁定

我有一个超过160百万条目的表,它有一个错误的表引擎,所以我要改变引擎. 当我这样做而没有任何准备时,由于我的缓冲区大小,我得到一个错误,因为行锁太多 mysql> ALTER TABLE foobar ENGINE=MyISAM; ERROR 1206 (HY000): The total number of locks exceeds the lock table size 我

alter table error ERROR 1347(HY000):’table-name’不是mysql中的BASE TABLE

最近我试图在我的数据库的一个表中添加一个列,该表有316个表但是在以下命令之后: mysql> ALTER TABLE view_Server ADD rsh_protocol VARCHAR(60); 我收到以下错误: ERROR 1347 (HY000): 'itop.view_Server' is not BASE TABLE 我所有的搜索都没有成功,比如使用’“’.所以问题是

为什么不能使用预处理语句(基于ALTER TABLE)从PHP设置MySQL字段的默认值?

我正在编写PHP代码来更改MySQL数据库中varchar字段的默认值.为了使代码安全,我使用了一个准备好的语句,但由于某种原因,在这种特殊情况下似乎不可能让PHP / MySQL接受它,为什么呢? (我使用的是PHP 5.5.11) 下面是使用预处理语句的代码,它不起作用(mysqli_stmt_execute()调用返回null

mysql – 使用knex.js的我的Sql Alter表

需要使用knex更改MySql Db中列的数据类型和默认值; 稍后数据类型是日期,需要将其更改为dateTime以及从NULL更改为CURRENT_TIMESTAMP所需的默认值 下面给出了MySql Query实现的相应功能 ALTER TABLE `Employees` CHANGE COLUMN `added_date` `added_date` DATETIME DEFAULT CURREN

搜索在mysql中一次更改多个表的简单方法

我有很多以一些前缀开头的表, 我想改变这些表格 什么是简单的方法(而不是在所有表上运行) 我的意思是: ALTER TABLE LIKE tablenameprefix% ADD INDEX `NewIndex1` (`field`); 我怎样才能做到这一点 ? 谢谢 编辑: 我可以在存储过程中做一种循环吗? 通过选择表的名称 SELECT TABLE_N

mysql – 在列之后添加新列并定义默认值

我正在尝试在另一列之后添加一列,同时还指定一个默认值.以下是我的尝试不起作用. alter table pageareas add content_userDefined BIT( 1 ) NULL default 0 after content; 如果我删除“内容后”它的工作原理: alter table pageareas add content_userDefined BIT( 1 ) NULL def