标签: auto-increment

重置PK自动增量列

我一直在多次导入数千条记录,以确保导入运行完美.

因此,现在当我在发布之前进行实时导入时,自动增量列的ID列大约为300,000.

一旦删除了这些表中的所有数据,有没有简单的方法来"重置"这个?我只想出于搜索引擎优化的原因,网址:

Forum/1/Post
Forum/35/Post
Forum/5600/Post
Run Code Online (Sandbox Code Playgroud)

看起来更漂亮,更简洁(因此在结果中更易于点击)

Forum/300124/Post
Forum/370321/Post
Forum/450111/Post
Run Code Online (Sandbox Code Playgroud)

我宁愿不删除列并重新插入列,因为它会破坏所有关系,并且意味着我必须刷新所有数据上下文图等.

primary-key reset auto-increment sql-server-express sql-server-2008

3
推荐指数
1
解决办法
1万
查看次数

MySQL Master-Master 复制和自动递增列问题

我正在使用主-主复制进行一些测试,并且遇到了一些奇怪的问题,我将尝试描述我遵循的过程,以便有人可以重现该问题。

我在 2 个虚拟机上和每个虚拟机的配置文件中设置了复制:

-- Master1 -- 
auto_increment_increment = 2
auto_increment_offset = 1

-- Master2 -- 
auto_increment_increment = 2
auto_increment_offset = 2
Run Code Online (Sandbox Code Playgroud)

这些设置应该导致自动增量列的算术级数:

- Master1: 1,3,5,7,9,11,13  ...
- Master2: 2,4,6,8,10,12,14 ...
Run Code Online (Sandbox Code Playgroud)

Master1 得到奇数,Master2 得到偶数。然后我创建一个测试数据库并添加一个具有以下定义的表:

CREATE TABLE `t1` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `c1` varchar(50) DEFAULT NULL,
 `d1` date DEFAULT '1970-01-01',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;
Run Code Online (Sandbox Code Playgroud)

当然,数据库是在两台服务器上创建的。之后,我执行

START SLAVE;
Run Code Online (Sandbox Code Playgroud)

在两台服务器上,以便开始复制。为了生成数据,我使用以下过程:

  • 必须插入单个记录才能使进程起飞

    INSERT INTO t1(c1,d1) SELECT LPAD('', 50, MD5( RAND() ) ), DATE_ADD( CURDATE(), INTERVAL FLOOR( RAND() * 365 ) DAY …

mysql replication auto-increment master-slave database-replication

3
推荐指数
1
解决办法
9041
查看次数

集群中 h2 和 MySQL 的休眠 ID 生成器 AUTO_INCREMENT

为了测试,我使用了H2 数据库

对于生产,它是MySQL

我了解两者都支持AUTO_INCREMENTmysql / h2),但似乎 Hibernate 不能以这种方式工作。

identityMySQL 支持。美好的。
H2呢?我应该编写自己的生成器还是...?(使用org.hibernate.id.IdentifierGenerator文档所说的界面)。

我必须有一个很好的干净和快速的方法来long从数据库本身获取 ID(顺便说一下类型),因为应用程序在一个集群中(即同时将多个服务器INSERT放入数据库)......这就是为什么increment绝对不适合我。

谢谢!

java hibernate cluster-computing auto-increment

3
推荐指数
1
解决办法
1万
查看次数

MySQL - 插入一条主键为空的记录,适用于一台服务器,而不是另一台

我在 MySQL 服务器(版本 5.5.27,安装了 EasyPHP 用于开发)中有一个表,它有一个带有 Auto_Increment 的 ID,它的数据类型是 INT(11)。

当我尝试使用此语句插入记录时,它可以工作。

insert into factclientes (IDFactClientes, IDTercero, SubTotal, IVA, Total)
        values ('', '3', '2500.00', '400.00', '2900.00')
        ON DUPLICATE KEY UPDATE IDTercero = values(IDTercero),
                SubTotal = values(SubTotal), 
                IVA = values(IVA), 
                Total = values(Total)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在我的生产服务器(版本 5.6.17,独立安装在另一台机器上)上插入相同的记录时,它会引发错误:

 Incorrect integer value: '' for column 'IDFactClientes' at row 1
Run Code Online (Sandbox Code Playgroud)

我知道这是因为主键 ID 'IDFactClientes' 有一个空值。我这样做是因为我对 INSERT 和 UPDATE 使用了相同的语句。如果我的程序不知道并且没有指定 IDFactClientes,我想要一个新记录,如果我的程序已经知道 ID,并且指定了我想要更新记录。

奇怪的是它可以在我的开发机器上运行,但不能在我的生产服务器上运行。

是不是缺少什么设置??我怎么能解决这个问题??我的数据库的所有表都有完全相同的问题,我不想修改程序中的所有语句......如果可能的话

先感谢您!!

mysql string insert-update auto-increment

3
推荐指数
1
解决办法
2691
查看次数

通过选择结果更改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'
);
Run Code Online (Sandbox Code Playgroud)

错误:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AUTO_INCREMENT =
Run Code Online (Sandbox Code Playgroud)

原因:

根据MySQL Doc:

只要服务器运行,InnoDB就会使用内存中的自动增量计数器.当服务器停止并重新启动时,InnoDB会重新初始化每个表的计数器,以便第一次INSERT到表中,如前所述.

这意味着每当我重新启动服务器时,我的auto_increment值都会设置为尽可能小的值.

我有一张叫做ticket另一张叫的桌子ticket_backup.它们都有一个id共享的列.ticket表格内的记录可供客户索取.当他们声称ticket我在里面插入记录ticket_backup然后我从ticket表中删除它们.截至今天,我56 thousand已经索赔(内部ticket_backup)和0票可用.如果我现在重新启动服务器并且不执行该操作ALTER TABLE,则我提供的第一张票将具有 …

mysql sql select alter-table auto-increment

3
推荐指数
1
解决办法
1287
查看次数

自动递增 - 每年自动重置

MySQL/InnoDB

就我而言,我的收据应按年计算;1/2015、2/2015 ... 556/2015 等等。明年来的时候,柜台应该重新从1开始,收据应该计算为1/2016,2/2016 ...

如何定义将每年重置的 auto_increment 字段?

RCID | RCNO | RCYEAR | ...
=====+======+========+====
 200 |    1 |   2015 |
 201 |    2 |   2015 |
 ... |  ... |   2015 |     
 756 |  556 |   2015 |     <- last receipt in 2015
 757 |    1 |   2016 |     <- yearly counter restarted
Run Code Online (Sandbox Code Playgroud)

注意:RCID 是标准的 PK 自动递增字段。

mysql innodb auto-increment

3
推荐指数
1
解决办法
1712
查看次数

使用 loopback.js 和 MongoDB 自动递增

我想使用环回自动增加 mongodb 文档编号。

我在 mongo 中做了功能

 function getNextSequence(name) {
   var ret = db.counters.findAndModify(
          {
            query: { _id: name },
            update: { $inc: { seq: 1 } },
            new: true
          }
   );

   return ret.seq;
}


db.tweet.insert(
{
   "_id" : getNextSequence("userid"),
  "content": "test",
  "date": "1",
  "ownerUsername": "1",
  "ownerId": "1"
}
)
Run Code Online (Sandbox Code Playgroud)

它在 mongo shell 中工作。

但是,当我使用 loopback.js 浏览器(http://localhost:3000/explorer/)插入时,它不起作用。显示 400 错误(SytaxError)代码。

我不能在环回休息 API 中使用 mongo 函数?

我认为问题是这一行中的引号getNextSequence("userid"),

在此处输入图片说明

increment auto-increment mongodb strongloop loopbackjs

3
推荐指数
1
解决办法
4918
查看次数

Biginteger auto_increment主键Phinx

我正在尝试使用biginteger-primary密钥创建迁移并将其切换为auto_increment.

我正在使用robmorgans Phinx来创建迁移.

是否可以在创建数据类型BIGINTEGER后将表的主键更改为auto_incremented?

目前它看起来像这样.

$positions = $this->table('positions', ['id' => false, 'primary_key' => 'id'])
        ->changeColumn('id', 'biginteger', ['auto_increment' => true])
        ->addColumn('work_order_id', 'char', ['after' => 'vehicle_id','default' => null, 'null' => true,'limit' => 36])
        ->update();
Run Code Online (Sandbox Code Playgroud)

cakephp auto-increment phinx

3
推荐指数
1
解决办法
2187
查看次数

如何在没有自动增量的情况下制作主键?

我一直在尝试创建一个具有主键的模型,但我不希望该主键自动递增。

我知道我每次都可以指定该值,但我希望该字段需要我指定它(希望由数据库和 django 强制执行),并且如果我忘记了快速失败。

我可以auto_increment=False在我的领域说这似乎是合乎逻辑的,但这不受该领域的支持:(

python django auto-increment

3
推荐指数
1
解决办法
1884
查看次数

如何取消设置克隆的PHP对象的id

我正在开发一个使用Docrtrine和Symfony 2.7的项目.我有一个我想要克隆的Document实体,我当然需要确保我没有重复的主键.这是我到目前为止所尝试的:

/**
 * Document
 *
 * @ORM\Table(name="documents")
 */
class Document {
    public function ___clone(){
        $newObj = clone $this;
        $newObj->id = null;
        return $newObj;
    }
...
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎并不多,因为当我打电话clone myDocument然后尝试坚持时,我仍然得到这样的信息:

SQLSTATE [23000]:完整性约束违规:1062密钥"UNIQ_A2B07288ECC6147F"的重复条目"1"

如何让对象的主键恢复为空或自动递增状态?

=====

Upate:使用

public function __clone(){
    $this->id = null;
}
Run Code Online (Sandbox Code Playgroud)

仍会导致相同的错误.完整错误文字:

执行'INSERT INTO文件(usageFrom,usageTo,status,workflow_identifier,created_date,modified_date,language_id,translationRoot_id,ownerGroup_id,responsible_ser_id,production_id,media_id,created_user,modified_user)VALUES(?,?,?,?,?, ?,?,?,?,?,?,?,?,?)'与params ["2018-06-28 09:54:37","2018-06-28 09:54:37",100, "4cc723c2a5730c1b9c2ed6428ae57205","2018-06-28 09:54:37","2018-06-28 09:54:37",null,null,null,null,1,null,1,1]:

SQLSTATE [23000]:完整性约束违规:1062密钥"UNIQ_A2B07288ECC6147F"的重复条目"1"

php doctrine clone auto-increment symfony

3
推荐指数
1
解决办法
296
查看次数