我想更改字符串colums'迁移的大小。
我试过
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.easyschools.student.HomeActivity">
<FrameLayout
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/navigation"
android:layout_alignParentTop="true">
</FrameLayout>
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:background="@android:color/white"
android:layout_alignParentBottom="true"
app:menu="@menu/navigation"/>
</RelativeLayout>
但是这给我一个SQL语法错误迁移:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/nav_messages"
android:icon="@drawable/msg_icon"
android:title=""/>
<item
android:id="@+id/nav_home"
android:icon="@drawable/home_icon"
android:title=""
android:checked="true"/>
<item
android:id="@+id/nav_notify"
android:icon="@drawable/notify_icon"
android:title=""/>
<item
android:id="@+id/nav_my_profile"
android:icon="@drawable/user_icon"
android:title=""/>
</menu>
有什么办法吗? 所以目前该字段是一个大小为20的字符串,我希望它是一个大小为30的字符串。
提前致谢!
UPDATE 我也试过
Sequel.migration do
up do
alter_table(:users) do
set_column_type :car_model, :string, size: 30
end
end
down do
end
end
然而,这会导致我获得Sequel::DatabaseError: Mysql2::Error: 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 'String(30) NULL' at line 1
列:/
答案 0 :(得分:2)
你几乎是对的。您需要使用String
代替:string
:
set_column_type :car_model, String, size: 30
请注意,它使用的是varchar(30)
,而不是char(30)
。一般情况下,除非您知道自己需要char
,否则最好使用varchar
。
或者,只要您想强制使用特定于数据库的类型,就可以将其指定为字符串:
set_column_type :car_model, 'char(30)'
答案 1 :(得分:1)
我不知道续集,但在Postgres中你可以使用change_column
和:limit
这样:
change_column :users, :car_model, :string, limit: 30
希望它有所帮助!