Create table bookinfo (book_id int primary key,press varchar(20) default ‘机器工业出版社’);报错ERROR 1067 (42000): Invalid default value for 'press’
时间: 2024-09-18 18:09:05 浏览: 53
这个错误提示表明,在创建名为`bookinfo`的表时,对于`press`字段设置了无效的默认值。`press`字段的数据类型是VARCHAR(20),这意味着它应该存储长度不超过20字符的文字字符串,但是你尝试设置的默认值 `'机器工业出版社'` 可能超过了20个字符或者包含了一些不符合规定的内容。
在MySQL中,如果默认值不符合数据类型的规定,就会触发这样的错误。为了解决这个问题,你需要更改`press`字段的默认值,确保其长度在允许范围内,并且内容是有效的。例如,你可以将其设置为一个简短的描述或者留空,如果需要的话:
```sql
CREATE TABLE bookinfo (
book_id INT PRIMARY KEY,
press VARCHAR(20) DEFAULT ''
);
```
或者如果你有一个固定的短名称作为默认值:
```sql
CREATE TABLE bookinfo (
book_id INT PRIMARY KEY,
press VARCHAR(20) DEFAULT '机器工业出版社(缩减版)'
);
```
相关问题
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.design, PID: 20349 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.design/com.example.design.admin.admin_bookinfo}: android.database.sqlite.SQLiteException: table recommendBook already exists (code 1 SQLITE_ERROR): , while compiling: create table recommendBook(people_name text, yonghu text, guanliyuan text, _id integer primary key autoincrement);
这个错误的原因是在创建名为 recommendBook 的表时出现了问题。错误信息表明该表已经存在,因此无法再次创建该表。
解决方法是检查你的代码,确保在创建表之前,检查该表是否已经存在。你还可以尝试删除该表并重新运行应用程序,这样可能会解决问题。 但是,这样做会导致数据丢失,因此请确保在删除表之前备份数据。
修改数据库Librarymanage的存储过程sp_bookquantity,使该存储过程在Bookinfo表中查询剩余数量少于2的书籍的编号(字段名为Book_ID)、书名(字段名为Book_name)、作者(字段名为Book_author)、出版社(字段名为Book_press)、价格(字段名为Book_price)和剩余数量(字段名为Book_quantity)。
好的,根据您的要求,以下是修改后的存储过程sp_bookquantity:
```sql
CREATE PROCEDURE sp_bookquantity
AS
BEGIN
SELECT Book_ID, Book_name, Book_author, Book_press, Book_price, Book_quantity
FROM Bookinfo
WHERE Book_quantity < 2;
END
```
这个存储过程会在Bookinfo表中查询剩余数量少于2的书籍的编号、书名、作者、出版社、价格和剩余数量。您可以直接将此代码复制到您的数据库中执行以创建此存储过程。
阅读全文