我有一个查询,需要时间来执行,因为我正在导入geonames表
LOAD DATA LOCAL INFILE 'allCountries.txt'
INTO TABLE geoname
CHARACTER SET 'UTF8'
(geonameid, name, asciiname, alternatenames, latitude, longitude, fclass, fcode, country, cc2, admin1, admin2, admin3, admin4, population, elevation, gtopo30, timezone, moddate);
但是,如果我执行查询,我总是得到
Lock wait timeout exceeded; try restarting transaction
vagrant@homestead:~/work/homestead/project/bin$
所以我试着增加锁定时间。文档在此处说明:http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_lock_wait_timeout CLI参数为--innodb_lock_wait_timeout=#
,但是当我在查询中设置它时
mysql -ugeonames -psecret --local-infile=1 --innodb_lock_wait_timeout=500 geonames < geonames_import_data.sql
我收到了错误
mysql: unknown variable 'innodb_lock_wait_timeout=500'
但我的MySQL版本mysql Ver 14.14 Distrib 5.6.19, for debian-linux-gnu (x86_64) using EditLine wrapper
应支持此设置,对吧?
当我像SET GLOBAL innodb_lock_wait_timeout = 500;
一样全局设置它,然后用show variables like '%lock_wait%';
读取值时,我得到了正确的值
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| innodb_lock_wait_timeout | 500 |
| lock_wait_timeout | 31536000 |
+--------------------------+----------+
我如何在命令行中使用它?
我的版本:
select @@version // 5.6.19-0ubuntu0.14.04.1
mysql --version // mysql Ver 14.14 Distrib 5.6.19, for debian-linux-gnu (x86_64) using EditLine wrapper
答案 0 :(得分:0)
你可能有一个旧版本的mysql或者至少cli是旧的,可能来自v5.0系列。如果您查看自己链接的文档,则可以在innodb_lock_wait_timeout description:
中看到以下内容姓名:innodb_lock_wait_timeout
可变范围:全局
动态变量:否
动态变量no表示无法动态设置变量,仅在my.ini中,并且只有在重新启动服务器时,该值才会更改。如果您尝试动态更改变量,您将收到所描述的错误消息。