我有一个非常大的数据库表,我需要根据不同的原因拆分成较小的表。
通过php接近此示例进行处理:
// Note: It's an example and not working code - the actual function is much larger
function split_db()
{
$results = "
SELECT *
FROM big_table
";
foreach ( $results as $result )
{
// Here I split the big_tables contents and ...
$some_val = $result->SomeVal;
// ...
$another_val = $result->AnotherVal;
// ... here I insert the contents in the different tables
$sql = "
INSERT
INTO first_small_table
// ...
VALUES
// ...
";
}
}
问题:无论我是在本地环境还是在测试服务器上,查询都会插入255行。
问题:为什么?我做错了什么或者我错过了什么?我怎么能避免这个?
有关MySQL-Client-Version的信息:
我不是MySQL-Hero,所以任何帮助和解释都是值得赞赏的,因为Google对我没有任何意义(对我而言)。谢谢!
答案 0 :(得分:7)
我敢打赌你的主键为unsigned tinyint
类型,最大值限制为255.
因此将其更改为int
ALTER TABLE first_small_table MODIFY id INT;
答案 1 :(得分:5)
我不能说为什么你限制在255行,但我可以说你可以做一个查询,用你的大表将你的行添加到你的小表中,用INSERT INTO ... SELECT查询:
INSERT INTO first_small_table (col1, col2, col3)
SELECT col1, col2, col3
FROM big_table;
如果您不需要使用PHP,那么无论如何都不要使用它。只使用SQL会更快。