标签 MySQL 下的文章

MySQL的ExecuteNonQuery()出现异常 “未处理 System.ArgumentOutOfRangeException”

错误内容如下:

未处理 System.ArgumentOutOfRangeException
Message="索引和长度必须引用该字符串内的位置。\r\n参数名: length"
Source="mscorlib"
ParamName="length"
StackTrace:
在 System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
在 MySql.Data.MySqlClient.MySqlTokenizer.NextParameter()
在 MySql.Data.MySqlClient.Statement.InternalBindParameters(String sql, MySqlParameterCollection parameters, MySqlPacket packet)
在 MySql.Data.MySqlClient.Statement.BindParameters()
在 MySql.Data.MySqlClient.PreparableStatement.Execute()
在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
在 MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
在 DiguBackup.CDigu.BackupAsDb() 位置 d:\projects\DiguBackup\DiguBackup\Form1.cs:行号 245
在 DiguBackup.Form1.btnBackup_Click(Object sender, EventArgs e) 位置 d:\projects\DiguBackup\DiguBackup\Form1.cs:行号 76
在 System.Windows.Forms.Control.OnClick(EventArgs e)
在 System.Windows.Forms.Button.OnClick(EventArgs e)
在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
在 System.Windows.Forms.Button.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
在 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
在 System.Windows.Forms.Application.Run(Form mainForm)
在 DiguBackup.Program.Main() 位置 d:\projects\DiguBackup\DiguBackup\Program.cs:行号 18
在 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart()
InnerException:

google到了此文 “用mysql相当多问题。不是说开源不好,可是拜托,争争气吧” 的第五条,发现情况和这个几乎一样,看作者的语气对开源的东东都不怎么看好,并且说是源代码产生的问题,无法调试。我就郁闷死了。难不成要换种数据库? 这个是mysql官方09年的一个bug讨论贴 http://bugs.mysql.com/bug.php?id=44960, 我开始怀疑是sql语句有需要转义的字符,于是查看sql语句:

insert into status(
created_at,text,picPath,source,in_reply_to_status_id,in_reply_to_user_id,in_reply_to_user_name,in_reply_to_screen_name,favorited
)
values ('Mon Nov 16 21:02:03 +0800 2009','被杨教授电击的后果完全可以详见《飞越疯人院》(《One Flew Over the Cuckoo's Nest》)','','网站',0,0,'','','false')

这样可能看不清楚,拷贝到navicat和sqlserver management studio里面看看:

MySQL的ExecuteNonQuery()出现异常 “未处理 System.ArgumentOutOfRangeException”

Cuckoo后面的单引号没有被转义,所以肯定要报错。 mysql中字符转义的方法是在前面加上反斜杠 \ 字符。 可以将字符里面的 ' 替换为 \' ,直接用c#里面的replace(oldstring,newstring)替换。 我以为是replace("'","\'") ,其实是replace("'",@"\'")。@是用来避免转义,有啥字符输出啥字符的。

忘记mysql root密码

备忘一下。

以windows平台、xampp 1.7.3\ MySQL 5.1.41 为例

停掉当前的mysqld服务,也可以直接杀死mysqld.exe进程。

开个cmd,运行 mysqld --safe-mode --skip-grant-tables

再开个cmd, 运行mysql , 因为当前进入的是安全模式,所以不需要任何密码,直接进。

mysql>update user set password=password('new_password') where user='root';

mysql>quit

关闭安全模式mysqld,正常启动mysql,root的密码已经修改为 new_password

乘今天太阳热huaoer,晒一晒,免得发霉。

安装使用mysql操作我网站的数据库

wordpress又出了点问题。发布文章的时候没有显示在我的主页上。但是在文章的分类中还是可以查看到。所以想使用mysql把数据库重新做过。没有办法 谁叫我是菜鸟呢。 安装了yum就没有这样的费力了。

[root@jlinux ~]# yum install mysql-client
Loading "installonlyn" plugin
Existing lock /var/run/yum.pid: another copy is running. Aborting.

很多的时候都会遇到这样的情况。原因很简单,yum只允许同一时间内只能有一个进程运行。原理知道了,我就

[root@jlinux ~]# rm -f /var/run/yum.pid

把/var/run/yum.pid删除了,这样就可以使用了。所以以后使用yum的时候一定要正确的退出 而不是ctrl+c强制退出。

[root@jlinux ~]# yum install mysql
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
livna
[1/4]
core [2/4]
updates [3/4]
extras [4/4]
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
–> Populating transaction set with selected packages. Please wait.
—> Downloading header for mysql to pack into transaction set.
mysql-5.0.27-1.fc5.i386.r 100% |=========================| 35 kB 00:01
—> Package mysql.i386 0:5.0.27-1.fc5 set to be updated
–> Running transaction check
–> Processing Dependency: perl(DBI) for package: mysql
–> Restarting Dependency Resolution with new changes.
–> Populating transaction set with selected packages. Please wait.
—> Downloading header for perl-DBI to pack into transaction set.
perl-DBI-1.52-1.fc5.i386. 100% |=========================| 16 kB 00:00
—> Package perl-DBI.i386 0:1.52-1.fc5 set to be updated
–> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
mysql i386 5.0.27-1.fc5 updates 3.3 M
Installing for dependencies:
perl-DBI i386 1.52-1.fc5 updates 605 k

Transaction Summary
=============================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 3.9 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): mysql-5.0.27-1.fc5 100% |=========================| 1.8 MB 02:18
http://ftp.iij.ad.jp/pub/linux/fedora/core/updates/5/i386/mysql-5.0.27-1.fc5.i386.rpm: [Errno 4] Socket Error: (11, '\xe8\xb5\x84\xe6\xba\x90\xe6\x9a\x82\xe6\x97\xb6\xe4\xb8\x8d\xe5\x8f\xaf\xe7\x94\xa8')
Trying other mirror.
(1/2): mysql-5.0.27-1.fc5 100% |=========================| 3.3 MB 06:17
(2/2): perl-DBI-1.52-1.fc 100% |=========================| 605 kB 01:37

下载了 mysql and perl-dbi两个包。不知道是什么原因下载了这两个包,但是没有安装。 我就cd到yum的cache目录/var/cache/yum。我的Fedora 5上面有core、extras、fedora-xgl、livna、updates 这样的目录。core就是必要的软件。extras是额外的、附加的意思。feodra-xgl这个是我以前安装xgl桌面的时候建立的。livna有很多使用的软件 updates就是mysql的包的存放的目录了。

[root@jlinux packages]# pwd
/var/cache/yum/updates/packages
[root@jlinux packages]# rpm -ivh mysql-5.0.27-1.fc5.i386.rpm
Preparing… ########################################### [100%]
package mysql-5.0.27-1.fc5 is already installed
[root@jlinux packages]# rpm -ivh perl-DBI-1.52-1.fc5.i386.rpm
Preparing… ########################################### [100%]
package perl-DBI-1.52-1.fc5 is already installed

安装这两个包,但是安装mysql并没有成功。

#mysql -h jlinux -u sq_tunpishuang -p

连接的时候显示

[root@jlinux ~]# mysql -h jlinux.cn -u sq_tunpishuang -p
Enter password:
ERROR 1045 (28000): Access denied for user 'sq_tunpishuang'@'222.183.62.123' (using password: YES)

看到以下的东西就是我们已经成功的进入的MYSQL的 数据库系统。真的是很对不起大家。我用的空间是windows下面的mysql.呵呵。linux那些都很贵,不是linux的优点是成本低吗?其实不是这样,Linux的发行版确实是很便宜。但是由于linux的复杂度高,所以网管的工资高了费用当然就高了哦。

下面是连接成功的样子 :

[root@jlinux ~]# mysql -h 125.65.81.5 -u sq_tunpishuang -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 77045 to server version: 5.2.3-falcon-alpha-communit y-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
——————————————————–

[root@jlinux ~]# mysql -h jlinux.cn -u sq_tunpishuang -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 77149 to server version: 5.2.3-falcon-alpha-community-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use sq_tunpishuang
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+————————–+
| Tables_in_sq_tunpishuang |
+————————–+
| wp_categories |
| wp_comments |
| wp_link2cat |
| wp_links |
| wp_options |
| wp_post2cat |
| wp_postmeta |
| wp_posts |
| wp_sticky |
| wp_usermeta |
| wp_users |
+————————–+
11 rows in set (0.05 sec)

可以看到很多的表格了,呵呵。wp_表示我用的是wordpress的php程序,然后就开始重新做站了。

ERROR 1045 (28000): Access denied for user

今天第一次做了就是把我的网站的所有的数据库都删除。因为我上次也说过了把WORDPRESS作为网站的主程序。其实我想了一想真的是WORDPRESS的灵活性真的是很强。我把http://jlinux.cn/blog 的程序的东西都删除然后下载了一个wordpress2.2的最新的中文版。其实也不叫中文版。是一个汉化版吧。因为wordpress的官方网站(http://wordpress.com)好像没有语言包之类的。都是国内的一些牛人做的汉化版。网站的地址是http://wordpress.org.cn 然后花了N多的时间用FlashFxp上传。文件不大但是很多。真实羡慕那些可以在线解压缩的空间,真是棒极了。呵呵。最后上传后打开http://jlinux.cn/index.php出现的东西让我很吃惊。简单的最原始的东西。随便点一个连接也是打不开了。原因很简单,我以前的数据库sq_tunpishuang还没有删除上面的东西还是以http://jlinux.cn/blog的链接来展示的。然后下一步也就确定了就是删除sq_tunpishuang这个库。开始在LINUX下没有上网成功。所以就用了mysql的win32版。在http://mysql.cn下载了最新的5.0的版本。问题就来了。连接的命令是:

mysql -h jlinux.cn -u sq_tunpishuang -p (密码)

结果显示这样的提示:

C:\mysql\bin>mysql ERROR 1045 (28000): Access denied for user <'ODBC'@'xxxxx'> (using password: NO)

xxxxx是我现在用的机器的IP。这样当然是无法连接。

我的解决的方法是使用视窗界面的EngInSite MySQL Client客户端

EngInSite MySQL Client客户端

ADD CONNECT !分别添上Friendly name。随便你填写什么。HOSTNAME就是你要连接的mysql的服务器的域名或者是IP。然后PORT一般是默认的3306。Database是你想要进入哪个你想操作的数据库。 username password :分别填上你的用户名和密码。就连接上了。把我的sq_tunpishuang清空这样我的wordpress就又可以使用了。